[英]JAVA Boolean variable won't change with a Switch Statement
我問用戶一些問題,並將答案存儲為布爾值,真或假。 在我的方法開始時,我將變量聲明為:
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);
任何幫助,將不勝感激,謝謝。
掉下去。
你忘了拆箱。
case "Y" : isWindow = true;break;
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
另一個興趣點是中斷聲明。 每個break語句終止封閉的switch語句。 控制流從切換塊后的第一條語句繼續。 break語句是必需的,因為沒有它們, 切換塊中的語句將陷入 :匹配case標簽之后的所有語句將按順序執行,而不管后續case標簽的表達如何,直到遇到break語句為止。
避免切換的全新思路( 假設沒有其他情況 )
boolean isWindow = INPUT.next().toUpperCase().equals("Y");
您忘記添加break
運算符。 閱讀有關開關塊的文檔。
問題是布爾值已更改。 但是在更改之后,您立即將另一個值分配給該isWindow
布爾變量。 為了避免這種情況,您需要break;
如果您希望switch語句不執行下一個案例,請在案例末尾進行。
只有您需要為案例添加休息時間。 如果您未添加中斷關鍵字,則它將在所有實際情況之后應用所有情況,僅在找到中斷或切換塊結束時才停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.