2016-02-18 4 views
0

Я пытаюсь получить целое число из System.in, и я хочу поймать возможные ошибки. Это код:Бесконечная петля при обходе исключения

int dim; 
boolean done = false; 

while(!done) 
    { 
    try 
    { 
     dim = in.nextInt(); 
     done=true; 
    } 
    catch(InputMismatchException e) 
    { 
     System.out.println("I need an integer"); 
    } 
    } 

Результат: я получаю бесконечный цикл строки ошибки. Что я делаю неправильно? Я пытаюсь поймать неправильное исключение?

+0

Вы правы, я добавил логическое значение после того, как я скопировал код в спешке, конечно, когда объявлено, что сделано false. –

+0

Почему блок try не повторяется? –

+0

Вы создали сканер? Если вы включили его в код. – YounesM

ответ

2

«Когда сканер выдает исключение InputMismatchException, сканер не пропускает токен, вызвавший исключение, так что он может быть извлечен или пропущен через какой-либо другой метод». Oracle

+0

Спасибо Faraz! (в этом случае я создал строку для Scanner.next(), а затем проанализировал целое число, изменив catch на соответствующее исключение). –

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