陷入无限 While 循环(使用 switch 语句)

Stuck In Infinite While Loop (with switch statement)

我有一段时间没有使用 Java 了,我遇到了一个简单但令人沮丧的错误。我的代码是这样的:

public static void main(String[] args) throws IOException{
    String input = "";
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    while(input != "Q"){
        input = in.readLine().toUpperCase();
        switch(input){
            default: break;
            case "A": //do stuff break;
            case "B": //do stuff break;
        }
    }
    System.out.println("Out of the loop!"); //never reaches this statement
}

我 运行 eclipse 调试器,它清楚地显示输入变量在用户输入时被更改为 "Q",但是 while 循环不断重新启动。

更改为

while(!input.equals("Q"))

比较字符串 equals() 而不是 ==

此外,在每个案例后使用 break;,否则您将得到 fallthrough

您应该使用 equals(值比较)而不是 ==(比较引用)来比较字符串:

while (!"Q".equals(input))

提示: 如果你在字符串文字上调用 equals,如果 input 是,它不会失败并返回 NullPointerException,通过有机会,null - 在这种情况下,它只会 return false

比较字符串时必须使用input.equals("Q")