我做错了什么?在编译并运行程序之后,我输入我的输入,无论它是什么,程序总是把它作为一个不正确的输入,并说我错了,在这里:
import java.util.Scanner;
public class mena3 {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
String Capitol;
System.out.print("Enter the capitol of Morocco: ");
Capitol = user_input.next();
if(Capitol == "Rabat") {
System.out.println("Good Job!");
}
else {
System.out.println("That is incorrect");
}
}
}
在我放入拉巴特之后,它说这是不正确的。如果我放入l,它说这是不正确的。为什么我不能赢?
答案 0 :(得分:4)
不要使用==
比较字符串。请改用equals(...)
或equalsIgnoreCase(...)
方法。理解==检查两个对象是否相同而不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,并且这才是最重要的。而不是
if (fu == "bar") {
// do something
}
做,
if ("bar".equals(fu)) {
// do something
}
,或者
if ("bar".equalsIgnoreCase(fu)) {
// do something
}
投票决定关闭这个问题,因为它只在本网站上被问过并回答了无数次。
答案 1 :(得分:3)
java中最常见的错误之一。字符串需要.equals()
而不是==
。
错:
if (str == "foo") {
}
右:
if ("foo".equals(str)) { // done in this order to avoid NPE
}
答案 2 :(得分:0)
您的代码非常完美,只有您的比较方法有误。所有其他语言都将==
视为比较运算符。但是在Java的情况下,它有点棘手。这里的Java ==
被用作对象的比较运算符,而不是字符串变量。
因此,为了比较两个字符串,你有一个名为`.equals()
的方法,它来自String类,它是自己的。
因此您需要相应地更改代码,
import java.util.Scanner;
public class mena3
{
public static void main(String[] args)
{
Scanner user_input = new Scanner(System.in);
String Capitol;
System.out.print("Enter the capitol of Morocco: ");
Capitol = user_input.next();
// if(Capitol == "Rabat") // your previous code
if(Capitol .equals ( "Rabat") ) // new updated comparison code
{
System.out.println("Good Job!");
}
else
{
System.out.println("That is incorrect");
}
}
}