Ваше время l oop проверяет, не содержит ли сканер целое число, доступное для синтаксического анализа, путем блокировки. Если это условие истинно, вы просто вызываете next (), который очищает кэш сканеров. Если вы не очистите кеш, он всегда будет иметь целое число и будет продолжать блокироваться бесконечно. Вам нужно вызвать метод вроде next () или nextInt () для получения значения.
Вызов nextInt (), который у вас есть, не запрашивает ввод снова, потому что вы ничего не потребляли в то время как l oop, вы только что проверили, является ли ввод анализируемым целым числом.
Это разбивка вашего кода (псевдо);
while scanner doesnt have a parseable integer {
consume that non parseable value
}
consume the parseable integer