У меня есть следующий код, который я использую, чтобы заставить пользователя ввести целое число, проверить, чтобы убедиться, что ввод действителен, и если нет, запросить ввод еще раз. Когда код запускается, все работает нормально, пока не будет введен какой-то неверный ввод, после чего код зацикливается, не останавливаясь, чтобы снова запросить ввод, пока не произойдет переполнение стека, и я понятия не имею, почему. Код:
//Create the scanner object
private static Scanner in = new Scanner(System.in);
//Function to get input in integer form, complete with exception handling
//A value of -1 means the user is done inputing
public static int getInt()
{
int num;
//Begin try block
try
{
//Get the user to input an integer
num = in.nextInt();
//Make sure the integer is positive. Throw an exception otherwise
if (num < -1)
throw new InputMismatchException();
}
//If an exception occurred during the inputting process, recursively call this function
catch (InputMismatchException e)
{
System.out.println("Error: Input must be a positive integer, or -1.");
System.out.print("Enter a score: ");
num = getInt();
}
//Return the inputed number
return num;
}