我试图为我的编程课程编写一个程序,该程序应该像在线购物商店一样运行,所以在某一时刻该程序应该询问用户是否有促销代码,如果他们放入' y'是的,它要求六个字符的促销代码。
促销代码的标准是:
出于某种原因,我的程序似乎没有正常运行。它编译得很好,但是当它到达检查促销代码的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;
}
我为没有正确格式化的代码块道歉。我似乎无法弄清楚如何正确格式化...抱歉!我真的尝试过,显然不能做到这一点,所以我尽力而为。 无论如何,这是相关的代码。非常感谢帮助。
答案 0 :(得分:2)
比较char
值时,将char
与int
值进行比较会让您感到困惑:
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"))
补充说明:
break
声明。Character.toLowerCase
mo
扫描程序?仅使用pro
扫描仪对象 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"))