2017-12-26 13 views
-4

宿題をするときにdo while loopとwhileループを使用しているときにエラーが見つかりました。 doループwhile.butではなく、whileループで変数初期化を正常に実行します。なぜですか?理由は何ですか?変数初期化はwhileループで有効ではありませんか?

class Example{ 
    public static void main(String args[]){ 
     int x=100; 
     int a,b; 

     do{ 
      a=10; 
     }while(x>0); 

     while(x>0){ 
      b=10; 
     } 
     System.out.println(a); 
     System.out.println(b); 
    } 
} 

エラー:

variable b might not have been initialized 
System.out.println(b); 
        ^1 error 
+0

https://stackoverflow.com/a/8803806/6683139 –

+0

これがコンパイルされた場合、ループは無限に実行されます。ループを完全に削除するか、xを非正にするような何かをします。 –

+0

オハイオ州チェックします。私の野望はコードを実行するだけではありません。エラーを特定したいと思います。ご説明ありがとうございます。 –

答えて

3

do-while文、whileループとの主な違いです:DO-しばらくは関係なく、それが持っているものを条件に少なくとも一度実行していません。 whileループは条件によっては決して実行できません。だからあなたのケースでは変数aはdo-while本体で初期化されますが、whileループの条件がfalseの場合、本体は実行されず、したがって変数bは初期化されません。コンパイラは、whileループの条件が真であるかどうかを判断するためにコードを分析しません。これはコンパイルされず、コンソールに表示されるエラーがスローされます。

+0

だから、もしbを印刷したいのであれば、whileループを真似することはどうすればいいでしょうか?親切にコードを追加することができれば、わかりやすくなります。 –

+0

いいえ。コンパイラは、条件が真であるかどうかを判断するためにコードを分析しません。これはwhileループでこれをコンパイルするだけではありません。 –

関連する問題