2017-11-19 3 views
-5

私はプログラムを持っていますが、停止するように指示しても問題はありません。ブール変数がfalseになったときに実行を停止するように指示しましたが、変数がfalseになってもプログラムは実行を続けます。私がプログラムを実行し続けることがわかった唯一の方法は、whileステートメントの "= true"部分を取り除くことです。では、プログラムが正常に機能するためには、なぜ「=真」の部分を取り除く必要がありますか?私の例外プログラムはなぜ動作し続けますか?

import java.util.Scanner; 

public class EvenOdd { 

    public static void main(String[] args) { 
     Scanner input=new Scanner(System.in); 
     int num; 
     boolean continueLoop=true; 
     do { 
      try { 
       System.out.println("Enter an even number"); 
       num=input.nextInt(); 
       if(num%2==0) 
       System.out.println("That is an even number"); 
       else 
       throw new IllegalArgumentException(); 
       continueLoop=false; 
      } 
      catch(IllegalArgumentException ae) { 
       System.err.println(ae+"\nThat is a odd number"); 
      } 
     } while(continueLoop=true); 
     input.close(); 
    } 

} 
+2

'continueLoop = true'は代入であり、常にその行でvariabeをtrueに設定します。基本的なJavaチュートリアルを見てみると、https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html –

+0

を削除し、 '= true'を削除することは適切な修正です。 'someBoolean == true'の比較は冗長です。 'someBoolean'だけで十分です。 –

+0

を慎重に検討してください:while(continueLoop = true); –

答えて

0

whileループの条件として、比較の代わりに割り当てを使用しています。

continueLoop=trueを使用すると、値truecontinueLoopに割り当てられ、ループは単にwhile(true)になります。これは無限ループです。

割り当ての代わりに比較であるwhile(continueLoop == true)を使用してください。

関連する問題