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

时间:2017-12-01 12:37:17

标签: java oop boolean

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

boolean isWindow = false;

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

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

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

        System.out.println("Window: " + isWindow);

任何帮助都将不胜感激,谢谢。

4 个答案:

答案 0 :(得分:6)

堕落。

你忘了打破这个案子。

case "Y" : isWindow = true;break;

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

答案 1 :(得分:2)

您忘记添加break运营商。阅读有关switch阻止的文档。

答案 2 :(得分:0)

问题是布尔已更改。但在更改之后,您立即将另一个值分配给该isWindow布尔变量。为避免这种情况,如果您希望switch语句继续执行下一个案例,则需要在案例结尾处放置break;

答案 3 :(得分:0)

只有你需要为你的案件添加休息时间。 如果你没有添加中断关键字,它将在真实情况后应用所有情况,仅在找到中断或开关块结束时停止。