Я предполагаю, что когда вы говорите, взрывается, вы имеете в виду, что вы получаете бесконечный цикл
Oops!! Please enter only integral numbers
Попробуйте вместо этого сделать следующее:
try {
int myInt = scanner.nextInt();
// …
}
catch (InputMismatchException e) {
System.out.println("Oops!! Please enter only integral numbers");
System.out.println(scanner.next() + " was not valid input.");
}
Редактировать : Я вижу, что мое первоначальное предположение было правильным; -)
Причина, по которой это происходит, заключается в том, что при сбое nextInt () внутренний указатель не перемещается, и поэтому каждый раз, когда вы можете снова вызывать nextInt, он выходит из строя на одном и том же токене. Итак, сначала нужно очистить токен, что я и делаю, распечатав текст, который является недопустимым. Это приводит к тому, что новый токен будет считан из входного потока.