爪哇岩布剪刀问题只返回一半结果
我是Java新手,任务是使用嵌套的if语句编写一个两人玩的石头/布/剪刀游戏。我的成果只有一半是打印结果
当我使用“else if”(“rock”).equals(player1)和纸“.equals(player2))”而不是嵌套的if语句,但嵌套的ifs是规则的一部分
Scanner in = new Scanner(System.in);
System.out.print("Player 1, please choose rock, paper, or scissors: ");
String player1 = in.next();
System.out.print("Player 2, please choose rock, paper, or scissors: ");
String player2 = in.next();
player1 = player1.toLowerCase();
player2 = player2.toLowerCase();
if (player1.equals(player2))
{
System.out.println("It's a tie!");
}
else if ("rock".equals(player1))
{
if ("paper".equals(player2))
{
System.out.println("Paper covers rock - Player 2 wins!");
}
}
else if ("rock".equals(player1))
{
if ("scissors".equals(player2))
{
System.out.println("Rock breaks scissors - Player 1 wins!");
}
}
else if ("paper".equals(player1))
{
if ("scissors".equals(player2))
{
System.out.println("Scissors cut paper - Player 2 wins!");
}
}
else if ("paper".equals(player1))
{
if ("rock".equals(player2))
{
System.out.println("Paper covers rock - Player 1 wins!");
}
}
else if ("scissors".equals(player1))
{
if ("paper".equals(player2))
{
System.out.println("Scissors cut paper - Player 1 wins!");
}
}
else if ("scissors".equals(player1))
{
if ("rock".equals(player2))
{
System.out.println("Rock breaks scissors - Player 2 wins!");
}
}
else
{
System.out.println("Invalid input. Please try again using rock, paper, or scissors");
}
in.close();
}
}
我希望每个输入组合都有一个输出,但是剪刀vs石头、石头vs剪刀、纸vs石头不会向控制台产生任何输出
# 1 楼答案
请注意,同一张支票有两次。当第一个为true时,将只执行该块,并跳过下一个
else if...
。要解决此问题,只需在一个块中执行player2的所有检查:您还应该了解
switch
语句,它可以提供问题的替代解决方案