@hax
junior developer

При обработке исключения (InputMismatchException) брошенное Scanner'ом зацикливается программа?

Ниже выложил код. Если в консоли умышленно ввести текст вместо число, то программа зацикливается и бесконечно обрабатывает исключение InputMismatchException
for (int i = 0; i < Count; i++) {

            System.out.println("Enter the number");
            try {
                userNumber = in.nextInt();
                if (!(userNumber > 0 && userNumber < 11))
                    throw new Exception("The number must be greater than 1 and less than 10. ");
            }
            catch (InputMismatchException err) {
                System.out.println("Type a number, not a text");
                i--;
                continue;
            }
            catch (Exception err) {
                System.out.println(err.getMessage());
                i--;
                continue;
            }

Выводит что-то вроде этого:
Enter the number
asdasd
Type a number, not a text
Enter the number
Type a number, not a text
Enter the number
Type a number, not a text
Enter the number и т.д.
  • Вопрос задан
  • 591 просмотр
Решения вопроса 1
@1001001
Scaner пытается считать ранее введенную строку (ожидая int), ловит исключение и вновь её же пытается считать.
Если хотите оставить свой код, добавьте in.next() в catch блоки

но лучше использовать hasNextInt(), и либо считывать int, либо выводить сообщение и считывать String
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы