Так что я делаю текстовую приключенческую игру в JAVA на данный момент. У меня небольшая проблема с моим кодом, что делает геймплей игры очень раздражающим. Когда игрок вводит команду, например, «на север», при первом срабатывании. Но во второй раз это не сработает. Он не отображает мой случай переключения по умолчанию, поэтому он распознает команду. Когда я вхожу в ту же команду, например, «иди на север», опять же, она работает. Таким образом, это не работает в первый раз, но просто вводя его еще раз, он заставляет его работать. Есть ли способ, которым я могу это сделать, чтобы он не работал на двух входах? Вот мой код:JAVA, Корпус выключателя вмещает две записи для работы
//// USER INPUT TIME ////
System.out.println(">_");
playerCommand = input.nextLine();
loop: while (loopInt > 0) {
switch (input.nextLine()) {
case "go north":
case "n":
alleywayGoNorth();
break loop;
case "go south":
case "s":
alleywayGoSouth();
break loop;
case "open door":
case "o door":
alleywayOpenDoorLocked();
break loop;
default:
System.out.println("That command is not valid at the moment.");
break;
}
}
////////
Вы читаете ввод дважды. 'playerCommand = input.nextLine();' читает первую строку. 'switch (input.nextLine())' читает следующую строку. Я предлагаю вам переместить 'playerCommand = input.nextLine();' в цикл while, а затем переключить переключатель на 'switch (playerCommand)' – user3100783
Удаление метки 'loop:' приведет к тому, что цикл while будет продолжен (предполагается, что ' loopInt' больше 0). Я предполагаю, что это означает, что использование 'break' с меткой в цикле заставляет вас вырваться из всего цикла, что похоже на то, что вы не хотите. – mdl
@mdl, это на самом деле то, что я хочу. Без цикла: и цикл разрыва; он не будет запрашивать ввод пользователя снова в следующий раз. Он просто запустит мой случай по умолчанию. – user3207994