Вы получаете исключение InputMisMatchException, потому что, если вы введете строку в scanner.nextInt()
, она немедленно выдаст ошибку и остановит программу, прежде чем она сделает что-либо еще, поэтому она не достигнет вашего оператора if. Один из способов обойти эту проблему - вместо этого получить пользовательский ввод в виде строки, try
, чтобы проанализировать его для int, и завершить l oop, если он не выдает исключение. Это моя реализация:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = "";
int number = 0;
boolean end = true;
do {
System.out.println("Input a number!");
input = scanner.nextLine();
try {
number = Integer.parseInt(input);
end = true;
} catch(Exception e) {
System.err.println("This is not a number");
end = false;
}
} while (!end);
System.out.println("You entered: " + number);
}