字符串比较java中的不匹配

时间:2013-11-03 06:57:06

标签: java

您好,我对一个非常简单的程序遇到了一些困难。

import java.util.*;
public class Compare
{
    public static void main( String args[] )
    {
         String username;
         Scanner input = new Scanner(System.in);
         String users[] = {"John", "James", "Smith", "Paul"};

         System.out.println("Please Enter Username: ");
         username = input.next();

         for( int i = 0; i < users.length(); i ++ )
         {
               if( users[i] == username )
                  System.out.println("Match");
               else
                  System.out.println("No Match");
         }
    }
}

当我运行这个程序时,我得到No Match,当我输入与users数组中的字符串相同的字符串时,我不知道怎么可能。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您需要使用users[i].equals(username)

==使用引用,而不是值比较。

答案 1 :(得分:0)

你需要写

if (users[i].equals(username))

不要使用==来比较Java中的字符串,因为它确定两个字符串是否是内存中完全相同的对象;而equals实际上比较了字符串中的字符。

答案 2 :(得分:0)

使用.equals方法来比较字符串(和任何其他对象)而不是==运算符。 例如:

users[i].equals(username);

==与引用变量一起使用的运算符检查它们是否指向内存中的相同位置。