当我将EmpNo(整数)替换为EmpName(String)时,它正常工作。我的代码不适用于Int。如果我搜索我的数组中的字符串它的工作,但当我在我的数组中搜索整数时,输出是未找到的员工编号!
int EmpNo[]=new int[a];
switch(a){
case 1:
System.out.print("Enter Employee Number:");
number = Integer.parseInt(reader.readLine());
int y = Arrays.asList(EmpNo).indexOf(number);
if(Arrays.asList(EmpNo).contains(number))
{
System.out.print("Employee Number: "+EmpNo[y]+" \nEmployee Name "+EmpName[y]+" \nSalary "+Salary[y]+"");
}
else
{
System.out.println("Employee Number not Found!!");
}
break;
}
答案 0 :(得分:0)
更改
int EmpNo[]=new int[a];
到
Integer EmpNo[]=new Integer[a];
当之前已经使用过indexOf()时,也不需要使用contains()。 y的值可以告诉您EmpNo中是否存在数字。如果y == -1,则在位置y找不到员工。
答案 1 :(得分:0)
正如大卫华莱士所指出的那样,int[]
不会自动装箱到Integer[]
,但会自动转换为单个对象。
将empNo定义为
Integer [] empNo = new Integer [a] ();
如果indexOf
为-1,那么contains
也将为假。
答案 2 :(得分:0)
EmpNo
是一个原始整数数组。 List<>
无法存储原始数据类型。它需要Integer
s。所以当你这样做时:
Arrays.asList(EmpNo)
它返回List<int[]>
而不是List<Integer>
。因此,contains
和indexOf
显然与int不匹配。
如果您可以更改EmpNo
的类型,最简单的解决方案是将其声明为:
Integer[] EmpNo = new Integer[a];
请注意Integer
而不是int
。这应该正常工作。如果您无法更改EmpNo
的类型,则需要使用此处给出的其他一些方法:
答案 3 :(得分:-2)
.contains()会将其中的参数视为string.so,尝试使用类似
的内容if(Arrays.asList(EmpNo).contains(new Int (number))