0

So I'm trying to check a list of account names to see if the username entered by the operator is in the database or not. At the moment I have:

for(int i = 0; i < rowCount; i ++){
            System.out.println("Stored in array:" + accounts[i+1]);
            System.out.println("name entered:" + LoginPage.usrname);
            if(accounts[i+1] == LoginPage.usrname){
                System.out.println("match");
            }else{
                System.out.println("no match");
            }
        }

I tried messing around with things like indexOf string and can't get anything to work. I'm sure there's a simple solution, just having trouble finding one. I don't understand why I can't compare a String array index to a String variable, seems like ti should be cake.

4

2 回答 2

2

这就是你要找的:

if(acounts[i+1].equals(LoginPage.usrname))

在in上使用==运算符并不会像您认为的那样。它不比较 的内容,而是比较它们在内存中的地址。该方法比较.StringsJavaStringsequalsStrings


作为一个可以帮助您记住的注释,这并不是什么特别的StringsStrings是对象,在 中Java==用于比较任何类型的对象都会出现同样的问题。如果您想比较您创建的自定义类的两个对象的内容,则必须equals为该类编写一个方法。 Strings工作完全相同。

于 2013-11-07T22:50:31.813 回答
0

字符串是唯一的引用类型,其行为类似于值类型。

在 Java 中,当尝试比较 String 的 using==运算符时,Java 将尝试检查两个引用是否相等,而不是 strings。为了实现值类型比较,您将使用以下方法之一:

方法一:str1.equals(str)
方法二:str1.compareTo(str) == 0

于 2013-11-07T22:53:30.203 回答