2016-12-02 10 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

elseがなければ、 'args.length!= 10'のとき' var'の値はどうなりますか?その価値はどこから来ていると思いますか? – yshavit

答えて

2

このように見てくださいコード内の条件が満たされていないとどうなりますか?理由は、あなたが言ってエラーを取得することになります。

ローカル変数 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は、実行時の問題ではなく、コンパイルの問題について質問しています。 –

関連する問題