簡體   English   中英

JAVA布爾變量不會隨Switch語句更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM