-2

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

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 数组中的字符串相同的字符串时,我不知道怎么可能。有什么建议么?

4

3 回答 3

1

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

users[i].equals(username);

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

于 2013-11-03T06:58:34.320 回答
0

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

==使用参考,而不是价值比较。

于 2013-11-03T06:58:28.207 回答
0

你需要写

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

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

于 2013-11-03T06:58:29.820 回答