-6

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

这是我的代码片段;

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

该程序正在打印失败,即使我打印出扫描的变量并且一切都是“a”。

有任何想法吗?

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

4

7 回答 7

1

==不推荐使用字符串比较。比较字符串的正确方法是equals()

if(!tempuser.equals("a")) {
    // rest of code
}
else {
    // rest of code
}
于 2013-04-02T13:36:30.877 回答
1

您需要将 equals() 与对象一起使用。

if (tempuser == null || !tempuser.equals("a")) {
  System.out.println("FAIL");
} //etc.

原因是 == 检查它是否是相同的引用。这适用于原语,如 int,但对于对象,您需要依赖 equals() 方法的实现来获取特定于类的指令来测试等效性。

于 2013-04-02T13:41:34.073 回答
0

总是String.equals(otherString)用来比较字符串的内容。与==您比较对象 ID。

于 2013-04-02T13:37:15.507 回答
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>
于 2013-04-02T13:37:52.587 回答
0

在 Java 中使用==and!=将检查引用是否指向完全相同的对象。这是极不可能的。

您可能希望使用该.equals()方法来检查字符串的内容是否相等。

if (!tempuser.equals("a")){
    // Do stuff
}
于 2013-04-02T13:37:57.447 回答
0

要比较字符串,您需要使用 String.equals

if (tempuser.equals("a"){
于 2013-04-02T13:37:02.187 回答
0

毫无疑问,在我提交此答案时,无数其他人已经说过,==检查对左侧对象的引用tempuser(在本例中为字符串)是否等于对右侧对象的引用(字符串“a”) . 您可能想要做的是使用该String.equals()方法,如下所示:

if(!tempuser.equals("a")) {
    //Foo
} else {
    //Barr
}

可以在这里看到更全面的答案。

于 2013-04-02T13:40:58.263 回答