JAVA布尔变量不会随Switch语句而改变

0 java oop boolean

我问用户一些问题并将答案存储为boolean,true或false.在我的方法的开头,我将我的变量声明为:

boolean isWindow = false;
Run Code Online (Sandbox Code Playgroud)

然后使用switch语句为我的布尔变量赋予不同的值:

        answer = INPUT.next().toUpperCase();
        switch (answer) {
        case "Y" : isWindow = true;
        case "N" : isWindow = false;
        }
Run Code Online (Sandbox Code Playgroud)

在我尝试将其变为'true'之后,我使用'System.out.println'来显示我的变量的值,但它显示为'false':

        System.out.println("Window: " + isWindow);
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,谢谢.

Sur*_*tta 6

堕落.

你忘了打破这个案子.

case "Y" : isWindow = true;break;
Run Code Online (Sandbox Code Playgroud)

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

另一个兴趣点是break语句.每个break语句都会终止封闭的switch语句.控制流继续切换块后面的第一个语句.break语句是必需的,因为没有它们,switch块中的语句都会失败:匹配的case标签之后的所有语句都按顺序执行,而不管后续case标签的表达式,直到遇到break语句.

避免切换的全新想法(假设没有其他情况)

boolean isWindow = INPUT.next().toUpperCase().equals("Y");
Run Code Online (Sandbox Code Playgroud)