==不使用扫描的字符串来测试用户/密码

时间:2013-04-02 13:35:21

标签: java equals

在评论中解决,'(tempuser.equals(actualuser)'是正确的方法。

这是我的代码片段;

if (tempuser != "a"){
  System.out.println("FAIL");
    logincount=logincount+1;
  }
else {
  System.out.println("Success");
  }

即使我打印出扫描的变量并且所有内容都是“a”,程序也会打印出FAIL。

有什么想法吗?

可以根据要求发布更多代码

7 个答案:

答案 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