编辑while循环

时间:2014-04-13 15:50:36

标签: java while-loop

我的视频扑克java游戏中有一个while循环。我正在使用这个循环来询问玩家他们是否想要保留当前的牌。在第一个循环中有另一个while循环,要求玩家输入有效答案,以防他们输入除#34;是"之外的任何内容。或"没有。"出于某种原因,它会跳过手中的所有其他卡片。例如,它会说,"你想保留卡号1吗?"然后我按是/否,接下来询问,"你想保留3号卡吗?"而不是2号。你能帮我弄清楚为什么会这样吗?

int i = 1;
while (i < 6)
{
    System.out.println("Would you like to keep the card number " + i + "?");
    System.out.println("Enter yes or no");
    String answer = input.next();
        while((!answer.equals("yes")) && (!answer.equals("no")))
        {
            System.out.println("Please enter a valid answer");
            answer = input.next();
        }

        if (answer.equals("yes"))
        {
            toKeep.add(p.getHand().get(i-1));
            i++;
        }
        else if (answer.equals("no"));
        {
            i++;
        }

        }

2 个答案:

答案 0 :(得分:3)

你有这个:

else if (answer.equals("no"));
{
     i++;
}

如果答案等于no,则结束语句(分号)。然后它执行块i++,无论答案是什么。

你应该在哪里:

else if (answer.equals("no"))
{
     i++;
}

如果答案等于no,则执行块i++

答案 1 :(得分:0)

首先,在else if条件

的末尾添加了分号

其次,在关闭while循环之前,你应该放一个input.nextLine()

这是最终的代码:

while (i < 6)
{
    System.out.println("Would you like to keep the card number " + i + "?");
    System.out.println("Enter yes or no");
    String answer = input.next();
        while((!answer.equals("yes")) && (!answer.equals("no")))
        {
            System.out.println("Please enter a valid answer");
            answer = input.next();
        }

        if (answer.equals("yes"))
        {
            toKeep.add(p.getHand().get(i-1));
            i++;
        }
        else if (answer.equals("no"))
        {
            i++;
        }
        input.nextLine(); // JUNK
}