Java 如何在ArrayList中使用整数?

Java 如何在ArrayList中使用整数?,java,Java,当我更换EmpNoInteger使其正常工作时。我的代码对Int不起作用。如果我在数组中搜索字符串,它会起作用,但当我在数组中搜索整数时,输出是找不到员工编号 int EmpNo[]=new int[a]; switch(a){ case 1: System.out.print("Enter Employee Number:"); number = Integer.parseInt(reader.readLine()); int y =

当我更换EmpNoInteger使其正常工作时。我的代码对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;
}
改变


此外,如果以前已经使用了indexOf,则不需要使用contains。y的值可以告诉您EmpNo中是否存在数字。如果y==-1,则在位置y处找不到其他员工。

正如David Wallace所指出的,int[]不会自动装箱为整数[],而是会自动转换为单个对象

将empNo定义为

Integer [] empNo = new Integer [a] (); 
另外,如果indexOf为-1,那么contains也将为false。

EmpNo是一个原始整数数组。列表不能存储基元数据类型。它需要整数。所以当你这样做的时候:

Arrays.asList(EmpNo)
它返回一个列表而不是一个列表。所以contains和indexOf显然与int不匹配

如果可以更改EmpNo的类型,最简单的解决方案是将其声明为:

Integer[] EmpNo = new Integer[a];
请注意整数而不是int。这应该可以正常工作。如果无法更改EmpNo的类型,则需要使用此处给出的一些其他方法:


.contains会将其中的参数视为字符串。因此,请尝试使用

if(Arrays.asList(EmpNo).contains(new Int (number))

EmpNo和number是如何定义的;索引是否返回-1?为什么不检查一下y的状况呢=-如果之前已经使用indexOf,则if?中的1不需要使用contains。y的值可以告诉您EmpNo中是否存在数字。如果y==-1,那么employee not found else在位置y处找到。我不确定这一点,但我认为问题在于,当您将int[]传递给asList时,它被视为单个元素;因为它不能转换为整数[]或对象[]。什么是新的Int?这个答案没有问题。我怀疑选民误读了它。有时也会发生。
Integer[] EmpNo = new Integer[a];
if(Arrays.asList(EmpNo).contains(new Int (number))