Java - 大小写循环

Java - Case Looping

我正在试验 case 语句,我似乎在某处创建了一个无限循环。我不确定为什么会这样。我的代码循环一次然后而不是再次循环并要求另一个计算选项 - 它一直打印出 "Unrecognized option..."

有人能解释一下吗?

这是我的代码。

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);
}

我认为 choice 的值不是这些 case 值 (q, Q, r, R, c, C),这就是它执行 default 块的原因。

你说:

it keeps printing out "Unrecognized option..."

default中,所以确认choice的值不是大小写值。

并且由于您没有更改默认值 exit 的值,因此循环继续并再次进入默认块,如此继续下去。

只能是因为userMain.menuUI();从来没有returnsq或Q

如果您需要更多详细信息,则必须提供相关代码。

In Switch case if no case statement is matched by default default block will be executed.

在你的情况下,如果选择不匹配,那么它将始终执行默认情况,即你没有任何条件来打破循环。

如果你想让用户给出正确的输入,显示意思完整的错误信息或者让他输入有限的选项