2016-11-17 6 views
-2

Javaプログラミングのいくつかの練習プログラムで私の頭を包み込み、ループやスキャナユーティリティを試してみると、スキャナは正しい入力が入力されたかどうかをチェックし、正しい入力が入力されるまでプログラムをループさせます。起こることになっている基本的にはどのようなJava Scannerのユーティリティでは、ユーザーがループ内で入力を再入力することはできません

import java.util.Scanner; 

public class Calculator { 

    public static void main(String[] args) { 

     Scanner s = new Scanner(System.in); 
     int numbOne; 
     boolean checker; 

     System.out.println("please enter an Interger"); 

     do{ 
      if(s.hasNextInt()){ 
       numbOne = s.nextInt(); 
       System.out.println("Yay it worked!!!"); 
       checker = true; 
      } 
      else{ 
       System.out.println("I told you to enter an integer you idiot\nTRY AGAIN!!!!!!"); 
       checker = false; 
      } 
     } 
     while(checker == false); 

    } 

} 

は、プログラムがループに入ると、ユーザはそれをメッセージ表示する整数入力すれば、それは、入力に整数をユーザーに尋ねることである「イェーイ、それが働いたの!!!」ループから抜け出しますが、ユーザーが文字列またはその他の値を入力すると、コードはループして再び入力を要求する必要があります。

しかし私が抱えている問題は、プログラムは入力を一度しか求めておらず、間違った入力があった場合、プログラムはユーザーに再度入力を要求せずに何度も何度もループを繰り返しています。

私は間違って何をしましたか?

+1

実際にループを終了したくない場合は、なぜ 'checker'を' true'に設定していますか? – bradimus

答えて

-2

次のトークンを消費する必要があります。 elseブロックでs.next()に電話してみてください。

基本的に 'hasNextInt()'メソッドはpeekメソッドですが、その入力を消費することはなく、したがって同じ入力を見続けます。

+0

ありがとうございました –

関連する問題