5

可能重复:
字符串不等于字符串?

我是 java 新手,我不知道这个代码块有什么问题。我知道数组不是空的,我正在其他地方测试它。也许有一个我习惯用c#编程的语法问题。

     Scanner input = new Scanner(System.in);
     System.out.println("Enter ID :");
     String employeeId = input.nextLine();
     int index =  -1;
     for(int i = 0 ; i < employeeCounter ; i++)
     {
         if(employeeId == employeeNumber[i])
         {
           index = i;
         }
     }

     if(index == -1)
     {
         System.out.println("Invalid");
         return;
     }

我总是进入“无效”部分。知道为什么吗?提前致谢


employeeNumber[0]is "12345" employeeIdis"12345" 但我不能进入第一个 if 语句,尽管employeeIdIS 等于employeeNumber[0]

4

7 回答 7

12

不要将字符串与==.

采用

if (string1.equals("other")) {
    // they match
}
于 2012-04-25T05:33:32.893 回答
6

比较这样的字符串

if(employeeId.equals(employeeNumber[i]) {

}
于 2012-04-25T05:33:33.183 回答
4

正如其他人所指出的 - 完整的代码会有所帮助,但我的猜测是这行代码:

if(employeeId == employeeNumber[i])

您不使用 == 比较 2 个字符串。请改用 equals() 或 equalsIgnoreCase()。== 仅检查对象是否相等,即employeeId 和employeeNumber 是否引用内存中的同一对象。因此,对于对象,始终使用 equals() 方法。对于字符串,您也可以使用 equalsIgnoreCase() 进行不区分大小写的匹配。== 应该用于原始类型,如 int、long 等。

于 2012-04-25T05:37:01.130 回答
3

当您将 == 与两个字符串一起使用时,它会比较指针地址您应该使用 firststring.equals(secondstring) 来比较两个字符串

于 2012-04-25T05:33:35.630 回答
2

使用equals()方法比较字符串

if(employeeId.equals(employeeNumber[i])){}
于 2012-04-25T05:34:01.563 回答
2

比较字符串时,使用 String1.equals(String2); 这应该给你结果

于 2012-04-25T05:51:20.353 回答
0

"==" 检查两个对象的引用是否相同。但是 equals() 方法检查内容是相同还是不同。

于 2012-04-25T05:41:19.727 回答