2013-09-19 2 views
0

Я пытаюсь использовать цикл while, чтобы попросить пользователя повторно ввести, если вход не является целым числомИспользование цикла while в качестве подтверждения ввода

например. ввод является любым поплавком или строкой

 int input; 

     Scanner scan = new Scanner (System.in); 

     System.out.print ("Enter the number of miles: "); 
     input = scan.nextInt(); 
     while (input == int) // This is where the problem is 
      { 
      System.out.print("Invalid input. Please reenter: "); 
      input = scan.nextInt(); 
      } 

Я не могу придумать, как это сделать. Я только что познакомился с java

+0

Ознакомьтесь с методами 'Scanner.hasNext'. Там вы можете определить, какой тип будет иметь следующий вход. –

ответ

1

Проблема в том, что scan.nextInt() фактически выкинет InputMismatchException, если вход не может быть разобран как int.

Рассмотрим это в качестве альтернативы:

Scanner scan = new Scanner(System.in); 

    System.out.print("Enter the number of miles: "); 

    int input; 
    while (true) { 
     try { 
      input = scan.nextInt(); 
      break; 
     } 
     catch (InputMismatchException e) { 
      System.out.print("Invalid input. Please reenter: "); 
      scan.nextLine(); 
     } 
    } 

    System.out.println("you entered: " + input); 
1

В Javadocs сказать, что метод бросает InputMismatchException, если входной Безразлично, т совпадают с регулярным выражением целого числа. Возможно, это то, что вам нужно?

Итак ...

int input = -1; 
while(input < 0) { 
    try { 
    input = scan.nextInt(); 
    } catch(InputMismatchException e) { 
    System.out.print("Invalid input. Please reenter: "); 
    } 
} 

в качестве примера.

+0

За исключением 1, вероятно, действительное число, насколько вам известно. Ответ ниже моего будет работать. – Aaron

+0

FYI: «ниже» быстро теряет смысл, основываясь на изменениях и настройках пользователей, как показано на вкладке (то есть, самой старой, ...). – ChiefTwoPencils

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