2016-12-02 8 views
-5
public class LocalVariables { 

    static public void main(String args[]){ 

     int var; 

     if(args.length > 0){ 
      var = 10; 

     } 

     else{ 
      var = 20; 
     } 
     System.out.println(var); 
    } 

} 

hier, wenn ich entfernen else Teil Kompilierungsfehler es zeigt, wie:Lokale Variable Initialisierung Java

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The local variable var may not have been initialized 

Erklären Sie, wie die lokale Variable Wert initialisiert wird, wenn ich else Teil verwenden.

+0

sollte dies nicht 'public static void main' und nicht' static public void main' sein? – px06

+1

@ px06 buchstäblich keinen Unterschied. Sie können die Modifikatoren in der von Ihnen gewünschten Reihenfolge deklarieren. –

+1

Nun, ohne den else, was wäre der Wert von 'var' wenn' args.length! = 10'? Woher kommt dieser Wert? – yshavit

Antwort

2

Betrachten Sie es so was passiert, wenn die if Bedingung in Ihrem Code nicht erfüllt ist? Der Grund, warum Sie würde einen Fehler bekommen sagen:

Die lokale Variable var nicht

initialisiert wurden

, weil, wenn die Bedingung ist false Sie haben wirklich nicht var initialisiert, machst du?

Auf der anderen Seite diente else den Zweck, die Initialisierung im vorhandenen Code für Sie sicherzustellen.

+0

Wenn die Bedingung von IF nicht erfüllt ist, ist der Ausgang 20. Sag mir, wie sonst Teil ist die Initialisierung zu gewährleisten, warum nicht, wenn Teil? –

+0

Sobald Sie 'else' Teil und Ihre args.length' <= 0 'entfernen. Könnten Sie mir sagen, was wäre der Wert von 'var' in Ihrem Code? – nullpointer

1

Wenn Sie else Block entfernen, was wäre der Wert von varif(args.length<0)? Der Compiler weiß das nicht. So zeigt es dir Fehler. Entweder müssen Sie die var während der Deklaration initialisieren oder Sie müssen sowohl if als auch else blockieren.

+0

'if (args.length <= 0)'. –

-1

Bei der Ausführung von main Methode, sicherlich bieten Sie keine args Argument. So gibt args.length > 0 false zurück.

+0

haben Sie versucht, den Code auszuführen? – nullpointer

+0

Diese Antwort hat nichts mit OPs Problem zu tun. OP fragt nach einem Kompilierungsproblem, nicht nach einem Laufzeitproblem. –