0

所以我对Java相当陌生,我正在尝试运行一个程序,该程序将显示名称中的一定数量的字母并要求用户做出回应。用户的响应应该确定两个答案之一(“正确”或“对不起,那是不正确的”)。我遇到的问题是,当我运行程序并输入应该导致“正确”的答案时,即“比利乔尔”,我得到的响应是“对不起,这是不正确的”。我实际上不确定发生了什么,但是当我输入应该导致系统说“正确”的内容时,这里有一个指向 CMD 图片的链接,而是说“对不起,那是不正确的”:

在此处输入图像描述

这是相关代码的副本:

System.out.println("\nLet's play Guess the Celebrity Name.");

String s6 = "Billy Joel";

System.out.println("\n" + s6.substring(2, 7));

Scanner kbReader3 = new Scanner(System.in);
System.out
        .print("\nPlease enter a guess for the name of the above celebrity: ");
String response = kbReader3.nextLine();

System.out.println("\nYou entered: \n" + response + "\n");

if ((response == "Billy Joel")) {
    // Execute the code here if Billy Joel is entered
    System.out.println("\nCorrect!");
} else {
    // Execute the code here if Billy Joel is not entered
    System.out.println("\nI'm sorry, that's incorrect. The right answer was Billy Joel.");
}

System.out.println("\nThank you for playing!");

在此之前,该程序还有更多功能,但我对此没有任何问题,而且都是正确的。我取出了比利乔尔的部分,其他一切都按照预期运行。只是上面的代码与它应该输出的内容和输出的内容有关,这就是问题所在。我想知道我的代码中是否遗漏了一些东西,或者我做错了什么,但无论我做了什么,我们都会非常感谢帮助。

4

2 回答 2

0
    if (response!=null && response.length>0){
    //trim the input to make sure there are any spaces
    String trimmed=response.trim();
    if (response.equals(s6))
      System.out.println("\nCorrect!");
    } else {  ...  }
于 2013-09-24T00:52:39.653 回答
0

你的问题就在这里。您使用错误的运算符来比较字符串

if ((response **==** "Billy Joel")) {
   System.out.println("\nCorrect!");
} else {  ...  }

正确的应该是

if ((response.equals("Billy Joel")) {
   System.out.println("\nCorrect!");
} else {  ...  }

要在 java 中比较字符串,您必须使用 .equals() 运算符。要使用 '==' 运算符,您需要有 int、bool 等。

于 2013-09-23T22:47:43.810 回答