如何在ArrayList中使用整数?

时间:2014-07-09 06:58:11

标签: java

当我将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;
}

4 个答案:

答案 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>。因此,containsindexOf显然与int不匹配。

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

Integer[] EmpNo = new Integer[a];

请注意Integer而不是int。这应该正常工作。如果您无法更改EmpNo的类型,则需要使用此处给出的其他一些方法:

Arrays.asList() not working as it should?

答案 3 :(得分:-2)

.contains()会将其中的参数视为string.so,尝试使用类似

的内容
if(Arrays.asList(EmpNo).contains(new Int (number))