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

Java ==不使用扫描的字符串测试用户/密码,java,equals,Java,Equals,在注释中解决,“tempuser.equalsactualuser”是正确的方法 这是我的代码片段 if (tempuser != "a"){ System.out.println("FAIL"); logincount=logincount+1; } else { System.out.println("Success"); } 程序打印失败,即使我打印出扫描的变量,所有内容都是a 有什么想法吗 不建议使用==根据请求发布更多代码。比较字符串的正确方法是使用equal

在注释中解决,“tempuser.equalsactualuser”是正确的方法

这是我的代码片段

if (tempuser != "a"){
  System.out.println("FAIL");
    logincount=logincount+1;
  }
else {
  System.out.println("Success");
  }
程序打印失败,即使我打印出扫描的变量,所有内容都是a

有什么想法吗

不建议使用==根据请求发布更多代码。比较字符串的正确方法是使用equals


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

if (tempuser.equals("a"){
始终使用String.equalsotherString来比较字符串的内容。与==比较对象ID

要比较字符串是否相等,请不要使用==。==运算符检查 查看两个对象是否完全相同。可能需要两个字符串 不同的对象,但具有相同的值,则具有完全相同的值 里面的人物。使用.equals方法比较 平等类似地,使用.compareTo方法测试 比较。例如:

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

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

if (!tempuser.equals("a")){
    // Do stuff
}

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

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

可以看到更全面的答案。

您需要对对象使用equals

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

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

不要将字符串与==。它的工作方式正是它应该的。尝试在这里或谷歌上搜索字符串比较Java。不仅不推荐;根本不起作用在特定情况下,它会起作用,但是的,我同意最好将其视为不起作用。@Petesh有时起作用,但您需要比较字符串文本,即abc==abc返回true,但new Stringabc==abc返回false,因为new创建了新字符串,不重用字符串池中的一个对象,因此这些对象将不相同。IMHO这是所有字符串的根==字符串错误。
if(!tempuser.equals("a")) {
    //Foo
} else {
    //Barr
}
if (tempuser == null || !tempuser.equals("a")) {
  System.out.println("FAIL");
} //etc.