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");
         }
    }
}

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

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

users[i].equals(username);

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

您需要

使用 users[i].equals(username) .

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

你需要写

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

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

最新更新