我的视频扑克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++;
}
}
答案 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
}