簡體   English   中英

切換語句默認大小寫失敗

[英]Switch Statement Default Case Fall Through

這是一個小混亂,請原諒我的無知。 這是一個代碼片段。

public class SwitchTest {
    public static void main(String[] args) {

        int x = 2;

        switch (x) {
            case 1:
                System.out.println("1");
                break;
            default:
                System.out.println("helllo");
            case 2:
                System.out.println("Benjamin");
                break;

        }

    }
}

在此,如果x的值為2,則僅打印Benjamin 很好 現在假設,我將x to 3值更改x to 3 ,不匹配任何大小寫,而不是its a fall through from default case 到那時CASE 2將通過時,編譯器不需要將每種情況都匹配為3,這比為什么它返回默認值並輸出hello Benjamin更為重要。 有人可以解釋嗎?

謝謝,

您需要添加break; 語句以打破switch塊。

switch (x) {
    case 1:
        System.out.println("1");
        break;
    default:
        System.out.println("helllo");
        break; // <-- add this here
    case 2:
        System.out.println("Benjamin");
        break;

    }

一般而言,最好使用default: case是switch塊中的最后一個case。

在這種情況下,開關遵循以下模式:

x==1? No, check next case
default? Not done yet, check other cases
x==2? No, check next case
//No more cases, so go back to default
default? Yes, do default logic
// no break statement in default, so it falls through to case 2: logic without checking the case
output case 2 logic
break

請注意,該塊將如何跳過默認情況,並保存到以后,除非我們用盡了所有其他可能的情況。

因為您在default情況下沒有break ,所以它會打印兩個字符串,因此它會繼續進入case 2打印Benjamin。 您可以通過在default況上方添加break或將工case 2移動來解決此問題。

'switch'大小寫是'if-then-else'的其他形式,默認大小寫是最后的else部分。 建議在切換結束時寫入默認值。

默認檢查為最后。 這就是為什么感覺編譯器“退縮”了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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