当前位置: 首页 > 知识库问答 >
问题:

石头剪纸问题-只有一半的人返回结果

杨晓博
2023-03-14

我是Java新手,任务是使用嵌套的if语句编写一个两人玩的石头/布/剪刀游戏。我的成果只有一半是打印结果

当我使用“else if”(“rock”).equals(player1)时,该程序适用于所有组合

    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();
    }

 }

我期望每个输入组合都有输出,但是剪刀对石头,石头对剪刀,纸对石头不会给控制台带来任何输出。

共有1个答案

滕令雪
2023-03-14
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!");
    }
}  

请注意,您有两次相同的检查。当第一个为真时,只有该块将执行,下一个如果...将被跳过。要解决这个问题,只需在一个块中对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语句,它可以为问题提供替代解决方案。

 类似资料:
  • 我的任务是编写一个程序,让用户对着电脑玩石头、纸、剪刀的游戏。 说明: 主方法应该有两个嵌套的循环,其中外循环将允许用户根据需要经常玩游戏,内循环将玩游戏,只要有一个平局。在userChoice()方法的while循环中调用方法isValidChoice()来验证用户输入的选项必须是“Rock”、“Paper”或“Scissors”。如果输入了无效的字符串,isValidChoice()将返回fa

  • 我正在用java编写一个石头剪刀游戏,但有些事情我想不出来。首先,我想让用户可以输入“Rock”或“paper”,而不是1、2和3,但我想不出来。其次,我应该使用嵌套的if-else语句,但我也不知道如何使用我所做的。我的代码如下 导入Java . util . scanner;公共类RockGame {

  • 问题内容: 我有一个div,其border-radius设置为某个值(比方说10px),还有一个嵌套的div,它是其父级的完整宽度和高度。 我注意到,尽管溢出被设置为隐藏,但父母并没有将孩子夹在圆角上。另一个stackoverflow线程指示此行为是“设计使然”: …我不禁注意到“拐角裁剪”部分中的以下描述: 剪切到边框或填充边缘的其他效果(例如“可见”以外的“溢出”)也必须剪切到曲线。替换元素的

  • 我写了一个“石头、布、剪刀”游戏: 它可以工作,但是,这是很多s,我知道这对于语句时,问题是我不知道如何。 我试着根据输入使用一个返回语句:“返回0代表石头,1代表布,2代表剪刀”,然后使用一个条件来表示“嘿,如果一个玩家返回1,另一个玩家也返回1,那么就把‘平局’放进去,其他可能的结果也一样。”。 我试图将一个数字与结果联系起来:

  • 我在我的DC/OS上运行詹金斯服务器,并且在同一个DC中也有一个私人注册表。 私有注册表没有任何ssl证书,为了从我的mac推送图像,我使用了以下命令 ocker-机器ssh默认"echo$'EXTRA_ARGS=\"--insecure-注册表 \"' | sudo ted-a /var/lib/boot2docker/profile 所以它工作得很好。 在Jenkins身上我试图设置DOCKE

  • 本文向大家介绍Python实现石头剪刀布游戏,包括了Python实现石头剪刀布游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了一个简单的小游戏,分享给大家。 利用随机函数制作石头剪刀布小游戏 程序只运行一次 每次出拳一次要运行一次,很麻烦,要让程序一直运行 在程序中加个while条件就解决啦 长期玩游戏不利于身心健康,玩游戏要有度 那就默认游戏一开始有三次机会吧,每玩一次减掉一次