2012-11-04 7 views
7

Der folgende Code gibt mir: The local variable str may not have been initializedSwitch-Anweisung nicht initialisierten Variablen

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); 

    } 


} 

So gab ich str einen null Wert, und es hat funktioniert, aber ich bin immer noch fragen, warum die man auf der Dokumentation arbeiten, ohne den Wert zu initialisieren zuerst habe ich dreifach überprüft und ich glaube nicht, ich habe keine Tippfehler:

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); 
    } 
} 

Antwort

13

Da ein es default Case-Anweisung in der switch der Dokumentation Beispiel. Es heißt, wenn keine andere case Anweisung übereinstimmt. In Ihrem eigenen Code haben Sie keinen solchen "Fallback".

Daher gibt es immer mindestens eine Anweisung, die immer initialisiert wird.

Verwandte Themen