为什么我的 if-else 语句没有打印它们应该打印的内容?

我正在做一个学校编码项目,其中(使用 Java 博士)我编写了一个石头、纸、剪刀游戏。我的游戏要求用户投掷,同时随机生成计算机的投掷。


下面的代码代表了我的(不完整的)确定游戏获胜者的方法。它应该首先检查两次投掷是否相同,然后,如果不相同,则比较两次投掷,看谁赢了。最后的 else 语句是一个备份,以防用户输入石头、纸或剪刀以外的答案。


目前,字符串 compAnswer 被硬编码为“rock”。


    if (userAnswer == compAnswer)

{  

  System.out.println("Huh. A tie. That was... disappointing.");

  win = 2;

} else if (compAnswer == "rock"){

 { if (userAnswer == "paper") {

    System.out.println("Curses! I threw rock and lost!");

    win = 0;

  } else if (userAnswer == "scissors") {

    System.out.println("Hah! I threw rock and crushed your scissors!");

    win = 1;

  }}

} else {

  System.out.println("...You cheater! That's not a legal throw! Off to the fire and brimstone with you!");

但是,当我运行我的程序时,不会打印任何内容——当 userAnswer 得到“纸”或“剪刀”时,甚至当答案是假的时,都不会打印。我在这里不知所措-为什么我的打印语句没有被触发?


UYOU
浏览 159回答 1
1回答

暮色呼如

== 测试参考相等性和.equals() 值相等的测试。因此,将字符串与equals()方法进行比较:if (userAnswer.equals(compAnswer)) {}所以你的代码会像这样:if (userAnswer.equals(compAnswer)) {            System.out.println("Huh. A tie. That was... disappointing.");            win = 2;        } else if ("rock".equals(compAnswer)) {            {                if ("paper".equals(userAnswer)) {                    System.out.println("Curses! I threw rock and lost!");                    win = 0;                } else if ("scissors".equals(userAnswer)) {                    System.out.println("Hah! I threw rock and crushed your scissors!");                    win = 1;                }            }        } else {            System.out.println("...You cheater! That's not a legal throw! Off to the fire and brimstone with you!");        }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java