Бесконечный цикл в блоке try/catch с InputMismatchException: решение
Ваша Java-программа сталкивается с бесконечным циклом при обработке исключения InputMismatchException в попытке /catch блок, принимая целочисленные данные от пользователя. Такое поведение связано с тем, что после перехвата исключения InputMismatchException сканер остается в недопустимом состоянии, что приводит к бесконечному повторению цикла.
Чтобы решить эту проблему, необходимо выполнить следующие операции внутри блока catch. :
catch (InputMismatchException e) { System.out.println("Error!"); input.next(); // Move to the next line to avoid the infinite loop }
Метод input.next() перемещает указатель сканера на следующую строку, эффективно отбрасывая любой недопустимый ввод, вызвавший исключение.
В качестве альтернативы вы можете использовать метод hasNextInt() перед пытается прочитать целое число, тем самым гарантируя, что считываемое значение действительно является целым числом. Этот подход полностью устраняет необходимость обработки исключений:
while (true) { if (input.hasNextInt()) { n1 = input.nextInt(); break; } else { input.next(); // Skip non-numeric input } }
Помните, что в документации сканера Java указано, что после создания исключения InputMismatchException сканер не будет передавать токен, ответственный за исключение, и требует его получения или обхода другими способами. Внедрение этих модификаций должно смягчить проблему бесконечного цикла в вашей Java-программе.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3