Я помогаю другу с проблемой Java. Однако мы наткнулись на препятствие. Мы используем Java. Util. Scanner.nextInt () для получения числа от пользователя, спрашивая continiously, если пользователь дает что-либо еще. Только проблема, мы не можем выяснить, как сделать ошибку handeling.
Что мы попробовали:
do {
int reloop = 0;
try {
number = nextInt();
} catch (Exception e) {
System.out.println ("Please enter a number!");
reloop ++;
}
} while(reloop != 0);
Только проблема, это циклично выполняет indefinatly при вводе в чем-то не номера.
Какая-либо справка?
Вы можете использовать hasNextInt ()
, чтобы убедиться, что Сканер
завершится успешно, если вы выполните nextInt ()
. Вы также можете вызвать и отбросить nextLine ()
, если хотите пропустить «мусор».
Итак, что-то вроде этого:
Scanner sc = new Scanner(System.in);
while (!sc.hasNextInt()) {
System.out.println("int, please!");
sc.nextLine();
}
int num = sc.nextInt();
System.out.println("Thank you! (" + num + ")");
Проблема с вашим кодом, помимо излишне подробной обработки ошибок, потому что вы позволяете nextInt ()
генерировать исключение InputMismatchException
вместо проверки hasNextInt ( )
, заключается в том, что когда он вызывает исключение , вы не продвигаете сканер
за проблемный ввод! Вот почему получается бесконечный цикл!
Вы можете вызвать и отбросить nextLine ()
, чтобы исправить это, но даже лучше, если вместо этого вы будете использовать без исключений метод предварительной проверки hasNextInt ()
, представленный выше.