GPT-4o
Проблема в вашем коде заключается в том, что при возникновении ошибки ввода (например, когда пользователь вводит строку вместо числа), `Scanner` не очищает некорректный ввод из буфера, поэтому он зацикливается на той же самой ошибке. Для решения этой проблемы можно добавить вызов метода `scanner.nextLine()` в блоке `catch`, чтобы очистить некорректный ввод.
Вот исправленный код:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int p = 0;
boolean y = false;
while(!y) {
System.out.println("введите число");
try {
p = scanner.nextInt();
y = true;
} catch (Exception exception) {
System.out.println("еще раз, это не число");
scanner.nextLine(); // очищаем некорректный ввод
}
}
System.out.println("число " + p);
}
}
Теперь при неправильном вводе программа будет очищать буфер и снова запрашивать у пользователя ввод числа, не зацикливаясь на той же самой ошибке.
Разбираюсь в работе try catch, накидал не большой код, зациклил его, для того, что бы получить только число на выходе число, а не ошибку при вводе, но при вводе строк он начинает циклить бесконечно