我问用户一些问题并将答案存储为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);
任何帮助都将不胜感激,谢谢。
答案 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)
只有你需要为你的案件添加休息时间。 如果你没有添加中断关键字,它将在真实情况后应用所有情况,仅在找到中断或开关块结束时停止。