簡體   English   中英

切換語句未初始化的變量

[英]Switch statement uninitialized variable

下面的代碼告訴我: The local variable str may not have been initialized

public class experiment{

    public static void main(String[] args){

        int day = 1;
        String str;

        switch (day) {
        case 1 : str = "nice";
        break;
        }

        System.out.println(str);

    }


}

所以,我給了str一個null值,它有效,但我仍然想知道為什么文檔上的那個沒有初始化值,我已經三重檢查,我不認為我有任何拼寫錯誤:

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

        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;
        }
        System.out.println(monthString);
    }
}

因為在文檔示例的switch中有一個default case語句。 如果沒有其他case陳述匹配,則調用它。 在您自己的代碼中,您沒有這樣的“后備”。

因此,總是至少有一個被調用的語句,它將始終初始化monthString

暫無
暫無

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

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