2013-05-31 10 views
-2

В приведенном ниже коде я прошу пользователя дать целочисленный ввод, а если вход 0 или отрицательное число, он будет повторяться до тех пор, пока не будет задано положительное число. Дело в том, что если пользователи нажимают на письмо, мой код падает, и, несмотря на то, что я использовал try-catch во многих отношениях, ничего не получилось. Есть идеи? Я использовал try-catch внутри цикла, но он работал только для ввода одной буквы и не корректно.Try-Catch внутри петли

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

numberOfPeople = input.nextInt(); 

while (numberOfPeople <= 0) { 

     System.out.print("Wrong input! Enter the number of people again: "); 

     numberOfPeople = input.nextInt(); 

} 

ответ

4

Проблемы в текущем коде является то, что вы всегда пытаешься читать int поэтому при получении нецелого входа вы не можете обработать ошибку в правильном направлении. Измените это так, чтобы всегда читать String и преобразовывать его в int:

int numberOfPeople = 0; 
while (numberOfPeople <= 0) { 
    try { 
     System.out.print("Enter the number of people: "); 
     numberOfPeople = Integer.parseInt(input.nextLine()); 
    } catch (Exception e) { 
     System.out.print("Wrong input!"); 
     numberOfPeople = 0; 
    } 
} 
//continue with your life... 
Смежные вопросы