boolean x = false;
String letter = "NULL";
do{
System.out.print("Enter grade (one character): ");
letter = sc.next();
switch (letter) {
case "a":
x=true;
break;
case "A":
x=true;
break;
case "b":
x=true;
break;
case "B":
x=true;
break;
case "c":
x=true;
break;
case "C":
x=true;
break;
case "d":
x=true;
break;
case "D":
x=true;
break;
case "f":
x=true;
break;
case "F":
x=true;
break;
default:
System.out.println("Invalid grade - must enter A,B,C,D,F (upper or lower case)");
System.out.println(x);
break;
}
System.out.println(x);
}
while(x=false);
--------------结果输出------------------------------- ----结果输出--------------------------
由于我是新手,我需要10个声望才能发布输出的图片...所以这是输出的输出...
//如果我输入String" e"
输入成绩(一个字符):e 成绩无效 - 必须输入A,B,C,D,F(大写或小写)
假
假
//如果我输入String" A"
,这是为了输入成绩(一个字符):A
成绩无效 - 必须输入A,B,C,D,F(大写或小写)
真
问题***:对于我的输出,当我进入" e"时,我希望看到类似
的内容输入成绩(一个字符):e
成绩无效 - 必须输入A,B,C,D,F(大写或小写)
假
假
//循环
输入成绩(一个字符):
所以我希望当我进入" e"它会使它变为假...然后从头开始直到最后输入的结果为:A,B,C,D,F(大写或小写)
我的错误是什么?我一直在尝试集思广益,但我想我会看到你们要说的话......
如果你认为我用来获得输出的策略不是最好的......你会推荐什么策略/逻辑?
感谢您的帮助!
答案 0 :(得分:2)
while(x=false);
这是错误的。 (应该是==)
答案 1 :(得分:1)
是=
是赋值运算符,你必须使用==
来检查相等性而不是那个,请注意这里你的开关可以减少到以下,目前你有冗余代码你可以更好地使用if语句这里有||
运营商。
switch (letter) {
case "a":
case "A":
case "b":
case "B":
case "c":
case "C":
case "d":
case "D":
case "f":
case "F":
x=true;
break;
default:
//...
答案 2 :(得分:1)
您可以进一步简化switch语句。通过将字母转换为大写,您将检查大写和小写。例如:
do{
System.out.print("Enter grade (one character): ");
letter = sc.next();
switch (letter.toUpperCase()) {
case "A":
case "B":
case "C":
case "D":
case "F":
x=true;
break;
default:
System.out.println("Invalid grade - must enter A,B,C,D,F (upper or lower case)");
break;
}
} while(x==false);
System.out.println(x);