在评论中解决,'(tempuser.equals(actualuser)'是正确的方法。
这是我的代码片段;
if (tempuser != "a"){
System.out.println("FAIL");
logincount=logincount+1;
}
else {
System.out.println("Success");
}
该程序正在打印失败,即使我打印出扫描的变量并且一切都是“a”。
有任何想法吗?
可以根据要求发布更多代码
==
不推荐使用字符串比较。比较字符串的正确方法是equals()
if(!tempuser.equals("a")) {
// rest of code
}
else {
// rest of code
}
您需要将 equals() 与对象一起使用。
if (tempuser == null || !tempuser.equals("a")) {
System.out.println("FAIL");
} //etc.
原因是 == 检查它是否是相同的引用。这适用于原语,如 int,但对于对象,您需要依赖 equals() 方法的实现来获取特定于类的指令来测试等效性。
总是String.equals(otherString)
用来比较字符串的内容。与==
您比较对象 ID。
要比较字符串是否相等,请不要使用 ==。== 运算符检查两个对象是否完全相同。两个字符串可能是不同的对象,但具有相同的值(其中包含完全相同的字符)。使用 .equals() 方法比较字符串是否相等。同样,使用 .compareTo() 方法来测试不相等的比较。例如:
String s = "something", t = "maybe something else";
if (s == t) // Legal, but usually WRONG.
if (s.equals(t)) // RIGHT
if (s > t) // ILLEGAL
if (s.compareTo(t) > 0) // CORRECT>
在 Java 中使用==
and!=
将检查引用是否指向完全相同的对象。这是极不可能的。
您可能希望使用该.equals()
方法来检查字符串的内容是否相等。
if (!tempuser.equals("a")){
// Do stuff
}
要比较字符串,您需要使用 String.equals
if (tempuser.equals("a"){
毫无疑问,在我提交此答案时,无数其他人已经说过,==
检查对左侧对象的引用tempuser
(在本例中为字符串)是否等于对右侧对象的引用(字符串“a”) . 您可能想要做的是使用该String.equals()
方法,如下所示:
if(!tempuser.equals("a")) {
//Foo
} else {
//Barr
}
可以在这里看到更全面的答案。