2016-11-17 2 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); 

    } 

} 

В основном то, что должно произойти в том, что когда программа входит в цикл он просит пользователя ввести целое число, если пользователь вводит целое число он отображает сообщение «Yay он работал !!!» и выходит из цикла, однако, если пользователь вводит строку или любое другое значение, тогда код перемещается вокруг и должен снова запрашивать ввод.

Однако проблема заключается в том, что программа только запрашивает ввод один раз, и если вводится неправильный ввод, программа просто продолжает циклическое выполнение инструкции else снова, не спрашивая пользователя о вводе снова.

Любая идея, что я сделал неправильно?

+1

Почему вы устанавливаете 'checker' в' true', если вы действительно не хотите выйти из цикла? – bradimus

ответ

-2

Вам необходимо использовать следующий токен. Попробуйте вызвать s.next() в блоке else.

В основном метод 'hasNextInt()' является способом peek, но он никогда не будет потреблять этот вход и поэтому будет смотреть на тот же вход.

+0

Спасибо, что получил его на работу –

Смежные вопросы