Я предполагаю, что вы используете какую-то глобальную переменную playAgain
, чтобы указать, следует ли снова играть.Я бы вернул boolean
из функции, но в любом случае я не вижу, чтобы playAgain
был изменен в последнем else
блоке:
else {
while (!again.equalsIgnoreCase("y") && !again.equalsIgnoreCase("n")){
System.out.print("Invalid response. Please enter \"y\" or \"n\": ");
again=in.next();
}
}
Возможно, вам нужен весь набор if
s в цикле while
, поэтому again
будет обрабатываться после того, как он содержит "y" или "n"?В любом случае, структура функции нуждается в переосмыслении.
РЕДАКТИРОВАТЬ: Мой подход будет выглядеть примерно так:
public static boolean playAgain(Scanner in){
System.out.print("Play again?: ");
String again=in.next();
while (!again.equalsIgnoreCase("y") && !again.equalsIgnoreCase("n")) {
System.out.print("Invalid response. Please enter \"y\" or \"n\": ");
again = in.next();
}
if (again.equalsIgnoreCase("y")){
playerScore = 0;
aiScore = 0;
return true;
}
// there are only two valid options, so to get here it must be "n"
return false;
}