所以我现在在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;
}
}
////////
答案 0 :(得分:1)
for循环的逻辑是错误的。将switch (input.nextLine())
更改为switch (playerCommand)
,然后在switch语句末尾添加playerCommand = input.nextLine()
。另外,在break语句中删除对循环的所有引用。
答案 1 :(得分:0)
您的行被“错开”一行,因为您检索输入两次。
变化:
switch (input.nextLine()) {
到
switch (playerCommand) {
答案 2 :(得分:0)
您正在获取播放器的输入两次。一次初始化“playerCommand”时,一次创建switch语句时。删除playerCommand初始化并将其替换为switch语句。
switch(playerCommand = input.nextLine()) {
...
}
如果您还不需要“playerCommand”变量,可以使用:
switch(input.nextLine()) {
...
}