Я создаю программу для своего импровизированного театра, которая поможет нам выбирать игры, в которые мы играем на концертах ночью, не перекрывая стили любых других игр. Я столкнулся с проблемой, хотя. В приведенном ниже коде Scanner scWU считывает файл .txt, содержащий названия улучшенных игр, а Scanner sc является обычным сканером System.in.
Я вставил два моих метода ниже. getWarmUp () возвращает строку (игру) после того, как она считается выполнимой игрой определенной категории (в данном случае, категории разминки). isWarmUp () считывает файл warmupgames.txt и проверяет, является ли введенная игра разминкой
Мой вопрос: если пользователь не может ввести название игры (и isWarmUp возвращает false), как я могу перезапустить метод ИЛИ сбросить сканер scWU в верхней части файла? Должен ли я объявить несколько сканеров? Или я мог бы легко заставить этот же сканер снова сканировать файл после того, как пользователь не сможет правильно войти в игру? (ПРИМЕЧАНИЕ: я знаю, что цикл while в строке 25 является бесконечным циклом. Здесь я надеюсь ответить на этот вопрос)
Я отвечу на все вопросы о моем коде
public static String getWarmUp(Scanner sc, Scanner scWU)
{
String prompt = "What warm-up game will you choose? \n" +
"(NOTE: Type game as it's written on the board. Caps and symbols don't matter.)\n" +
"> ";
System.out.print(prompt);
String game = sc.nextLine();
//This while loop is infinite. This is where I'm hoping to somehow allow the scanner to reset and
//read again on a failed input
while(!warmUp)
{
warmUp = isWarmUp(scWU, game);
if(!warmUp)
System.out.println("That's not a warm-up game, try again.");
}
return game;
}
public static boolean isWarmUp(Scanner scWU1, String game)
{
int lineNum = 0;
while(scWU1.hasNextLine())
{
String line = scWU1.nextLine();
lineNum++;
if(line.equalsIgnoreCase(game))
return true;
}
return false;