2016-12-02 174 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); 
    } 

} 

這裏如果我刪除else部分它顯示編譯錯誤爲:局部變量初始化的Java

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

解釋局部變量值是如何初始化,如果我用else一部分。

+0

不應該是'public static void main'而不是'static public void main'? – px06

+1

@ px06從字面上看沒有區別。你可以按你喜歡的順序聲明修飾符。 –

+1

那麼,沒有其他的,當'args.length!= 10'時'var'的值是多少?你認爲價值來自哪裏? – yshavit

回答

2

看它這樣if條件在你的代碼不被滿足會發生什麼?的原因,你會得到一個錯誤說:

局部變量VAR 可能尚未初始化

,是因爲如果條件爲false你真的沒有var初始化,你做?

另一方面,else正在爲您確保現有代碼的初始化。

+0

當IF條件不滿足時,輸出爲20。告訴我如何確保初始化爲什麼不是部分? –

+0

一旦你刪除'else'部分和你的args.length'<= 0'。你能告訴我你的代碼中'var'的值是多少? – nullpointer

1

如果你刪除else塊,varif(args.length<0)的值是什麼?編譯器不知道這一點。所以它顯示你錯誤。要麼在聲明期間初始化var,要麼需要在if和else塊中初始化。

+0

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

-1

執行main方法時,肯定不會提供args參數。所以args.length > 0返回false。

+0

您是否嘗試運行代碼? – nullpointer

+0

這個答案與OP的問題沒有任何關係。 OP詢問編譯問題,而不是運行時問題。 –