我正在尝试使用case语句,我似乎在某个地方创建了一个无限循环。我不确定为什么会这样。我的代码循环一次然后再循环而不是再次循环并要求另一个计算选项 - 它会一直打印出来"无法识别的选项......"
有人可以对此有所了解吗?
这是我的代码。
public static void main(String []args) {
char choice;
boolean exit = false;
UserInterface userMain = new UserInterface();
do {
choice = userMain.menuUI();
switch(choice) {
case 'q':
exit = true;
break;
case 'r':
Real realResult = realCalculation();
System.out.println("\nAnswer = " + realResult.toString() + "\n");
break;
case 'c':
Complex complexResult = complexCalculation();
System.out.println("\nAnswer = " + complexResult.toString() + "\n");
break;
default:
System.out.println("\nUnrecognised option.\n");
break;
}
} while (exit == false);
System.exit(0);
}
答案 0 :(得分:1)
这只能是因为origin
永远不会返回q或Q
如果您需要更多详细信息,则必须提供相应的代码。
答案 1 :(得分:0)
我认为choice
的值不是这些case
值(q, Q, r, R, c, C
),这就是它执行default
块的原因。
你说:
它不断打印出“无法识别的选项......”
位于default
,因此确认choice
的值不是大小写值。
由于您没有在默认值中更改exit
的值,因此循环继续并再次进入默认块,这将继续。
答案 2 :(得分:0)
在Switch情况下,如果默认情况下没有匹配case语句,则默认块将被执行。
在你的情况下,如果选择不匹配,那么它将始终执行默认情况,你没有任何条件来打破循环。
如果您希望用户提供正确的输入,请显示含义完整错误消息或要求他输入有限的选项