剪刀石头布的问题 - 只有一半返回一个结果

问题描述 投票:0回答:1

我是新来的Java并使用嵌套的if语句编写两个玩家的摇滚/纸/剪刀比赛任务。只有一半我的结果打印结果

该程序将所有组合的作品,当我使用“否则,如果(”石头“.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摇滚不产生任何输出到控制台。

java
1个回答
2
投票
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...将被跳过。为了解决这个问题,只是做所有的检查在一个块player2的:

else if ("rock".equals(player1))    
{
    if ("paper".equals(player2))
    {
        System.out.println("Paper covers rock - Player 2 wins!");
    }
    else if ("scissors".equals(player2))     
    {
        System.out.println("Rock breaks scissors - Player 1 wins!");
    }
}  

你也应该了解switch声明,可以提供一种替代解决问题的方法。

© www.soinside.com 2019 - 2024. All rights reserved.