在评论中解决,'(tempuser.equals(actualuser)'是正确的方法。
这是我的代码片段;
if (tempuser != "a"){
System.out.println("FAIL");
logincount=logincount+1;
}
else {
System.out.println("Success");
}
即使我打印出扫描的变量并且所有内容都是“a”,程序也会打印出FAIL。
有什么想法吗?
可以根据要求发布更多代码
答案 0 :(得分:1)
不建议使用==
进行字符串比较。比较字符串的正确方法是使用equals()
if(!tempuser.equals("a")) {
// rest of code
}
else {
// rest of code
}
答案 1 :(得分:1)
您需要对对象使用equals()。
if (tempuser == null || !tempuser.equals("a")) {
System.out.println("FAIL");
} //etc.
原因是==检查它是否是相同的引用。这适用于原语,如int,但对于对象,您需要依赖equals()方法的实现来获取用于测试等效性的类特定指令。
答案 2 :(得分:0)
要比较字符串,您需要使用String.equals
if (tempuser.equals("a"){
答案 3 :(得分:0)
始终使用String.equals(otherString)
来比较字符串的内容。使用==
比较对象ID。
答案 4 :(得分:0)
要比较字符串是否相等,请不要使用==。 ==运算符检查 查看两个对象是否完全相同。两个字符串可能是 不同的对象,但具有相同的值(完全相同 其中的人物)。使用.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>
答案 5 :(得分:0)
在Java中使用==
和!=
将检查引用是否指向完全相同的对象。这极不可能。
您可能希望使用.equals()
方法来检查字符串的内容是否相等。
if (!tempuser.equals("a")){
// Do stuff
}
答案 6 :(得分:0)
毫无疑问,当我提交此答案时,无数人已经说过==
检查引用到左边的对象(String tempuser
in这种情况)等于右边对象的引用(字符串“a”)。你可能想要做的是使用String.equals()
方法,如下所示:
if(!tempuser.equals("a")) {
//Foo
} else {
//Barr
}
可以看到更全面的答案here。