Я делаю номера -проверку для консольной игры, которая использует рекурсию, чтобы убедиться, что пользователь в конечном итоге дает действительный вход. Но всякий раз, когда я представляю недопустимый вход, я получаю неизбежную стену «это недопустимый вход. Пожалуйста, попробуйте еще раз: это не является действительным входом. Пожалуйста, попробуйте еще раз: это не является действительным входом. Пожалуйста, попробуйте еще раз: «Пока не произойдет StackoverFlowerRor. Я предполагаю, что сканер не читает консоль в рекурсиях. Но я не понимаю, почему это произойдет.
Код: Выделить всё
private int getInt(int greatest, int least)
{
try
{
int output = scanner.nextInt();
if(output > greatest || output < least)
{
System.out.println("That is not a valid input. Please try again:");
return getInt(greatest, least);
}
return output;
} catch (Exception e)
{
System.out.println("That is not a valid input. Please try again:");
return getInt(greatest, least);
}
}
То, что я пробовал до сих пор, - то, что функция закрывает сканер, когда это будет сделано, и использует анализируемую Nextline вместо Nextint.
Подробнее здесь:
https://stackoverflow.com/questions/794 ... f-function