JAVA,Switch案例需要两个条目才能工作

时间:2014-01-17 19:30:25

标签: java while-loop switch-statement

所以我现在在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;
    }
} 

////////

3 个答案:

答案 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()) {
    ...
}