有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

爪哇岩布剪刀问题只返回一半结果

我是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) 个答案

  1. # 1 楼答案

    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!");
        }
    }  
    

    请注意,同一张支票有两次。当第一个为true时,将只执行该块,并跳过下一个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语句,它可以提供问题的替代解决方案