我是java的新手,我无法弄清楚这个代码块有什么问题。 我知道数组不是null我在其他地方测试它。也许我习惯用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]
是"12345"
employeeId
为"12345"
但我可以进入第一个if语句,尽管employeeId
等于employeeNumber[0]
。
答案 0 :(得分:12)
请勿将字符串与==
进行比较。
使用
if (string1.equals("other")) {
// they match
}
答案 1 :(得分:6)
比较那样的字符串
if(employeeId.equals(employeeNumber[i]) {
}
答案 2 :(得分:4)
正如其他人所指出的那样 - 完整的代码会有所帮助,但我的猜测就是代码的这一行:
if(employeeId == employeeNumber[i])
您不使用==比较2个字符串。请改用equals()或equalsIgnoreCase()。 ==仅检查对象相等性,即employeeId和employeeNumber引用内存中的同一对象。因此,对于对象总是使用equals()方法...对于字符串,您还可以使用equalsIgnoreCase()进行不区分大小写的匹配。 ==应该用于原始类型,如int,long等。
答案 3 :(得分:3)
当您使用带有两个字符串的==时,它会比较指针地址 您应该使用firststring.equals(secondstring)来比较两个字符串
答案 4 :(得分:2)
使用equals()
方法比较字符串
if(employeeId.equals(employeeNumber[i])){}
答案 5 :(得分:2)
比较字符串时,请使用
String1.equals(String2)
;
这应该给你结果
答案 6 :(得分:0)
“==”检查两个对象的引用是否相同。但equals()方法检查内容是相同还是不同。