所以我对Java很新,我正在尝试运行一个程序,它会显示一个名字中的一定数量的字母并要求用户回复。用户的回答应该确定两个答案中的一个(“正确”或“我很抱歉,这是不正确的”)。 我遇到的问题是,当我运行程序并输入应该导致“正确”的答案时,即“Billy Joel”,我得到了“我很抱歉,这是不正确的”。 我实际上并不确定发生了什么,但是当我输入应该引导系统说出“正确”的内容时,这里有一个指向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!");
在此之前还有更多的程序也可以,但我没有任何问题,这一切都是正确的。我拿出比利乔尔的部分,其他一切都完全按照预期运行。只是上面的代码与它应该提出什么以及它是什么推出的问题。我想知道是否我错过了我的代码中的某些内容或者我的错误,但无论我做了什么,都会非常感谢帮助。
答案 0 :(得分:0)
你的问题就在这里。您使用错误的运算符来比较字符串
if ((response **==** "Billy Joel")) {
System.out.println("\nCorrect!");
} else { ... }
正确的应该是
if ((response.equals("Billy Joel")) {
System.out.println("\nCorrect!");
} else { ... }
要比较java中的字符串,必须使用.equals()运算符。要使用'=='运算符,您需要使用int,bool等
答案 1 :(得分: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 { ... }