程序运行不正常

时间:2014-01-23 00:50:40

标签: java if-statement char switch-statement

我试图为我的编程课程编写一个程序,该程序应该像在线购物商店一样运行,所以在某一时刻该程序应该询问用户是否有促销代码,如果他们放入' y'是的,它要求六个字符的促销代码。

促销代码的标准是:

  • 第三个角色必须是7
  • 第五和第六个字符必须是' bG。'

出于某种原因,我的程序似乎没有正常运行。它编译得很好,但是当它到达检查促销代码的if语句时,它总是打印出告诉你促销代码错误的行。我甚至改变了它,以便标准只是代码中的一个字符需要为7,然后输入' 777777'作为促销代码,但它仍然打印出来,好像促销代码是错误的。

我无法弄清楚它为什么不能正常运行。 这是原始代码:

Scanner pro=new Scanner(System.in);
out.println("\nDo you have a promotional code? Enter Y for yes, N for no: ");
String pc=pro.nextLine();
char promo=pc.charAt(0);

int o=7;

switch(promo)
{
    case 'y':
    case 'Y':
         Scanner mo=new Scanner(System.in);
         System.out.println("Please input the six character promotional code here: ");
         String prm=mo.nextLine();
         char code=prm.charAt(2);

         if(code==7&&prm.substring(4).equals("bG"))
         {
              ordp=ordp*.9;
              System.out.println("\nYou have recieved ten percent off your order! Your order subtotal is now "+ordp+".");
         }
         else
         {
              System.out.println("\nYour promotional code is not valid.");
         }
    case 'n':
    case 'N':
         break;
}

我为没有正确格式化的代码块道歉。我似乎无法弄清楚如何正确格式化...抱歉!我真的尝试过,显然不能做到这一点,所以我尽力而为。 无论如何,这是相关的代码。非常感谢帮助。

3 个答案:

答案 0 :(得分:2)

比较char值时,将charint值进行比较会让您感到困惑:

if(code==7&&prm.substring(4).equals("bG"))  // specifically, code==7

您需要找到字符'7',而不是ASCII character whose int value is 7, "bel"。尝试

if(code == '7' && prm.substring(4).equals("bG"))

您需要添加prm.length() == 6的附加限制,以强制促销代码必须为6个字符。

答案 1 :(得分:2)

代码的数据类型是char。但'7'的char值不是7而是55。

所以改变if是这样的:

if(code=='7'&&prm.substring(4).equals("bG"))

补充说明:

  1. 如果您想继续使用自己的开关,请不要忘记break声明。
  2. 但您可以使用简单的if和Character.toLowerCase
  3. 来改进它
  4. 为什么要创建新的mo扫描程序?仅使用pro扫描仪对象

  5.    char promo= Character.toLowerCase(pc.charAt(0));
       if(promo == 'y'){
          /**
           * For yes
          */
       } else {
           /*
            * For no or different input
           */
       }
    

答案 2 :(得分:0)

char code=prm.charAt(2);

if(code==7&&prm.substring(4).equals("bG"))
{
    ordp=ordp*.9;
    System.out.println("\nYou have recieved ten percent off your order! Your order subtotal is now "+ordp+".");
}
else
{
    System.out.println("\nYour promotional code is not valid.");
}

在这里,您要将char与int进行比较,您希望将其与' 7'进行比较。 所以你可以改用它。

if(code=='7'&&prm.substring(4).equals("bG"))