繁体   English   中英

如何在ArrayList中使用整数?

[英]How to can i use integer in ArrayList?

当我将EmpNo(Integer)替换为EmpName(String)时,其工作正常。 我的代码不适用于Int。 如果我在数组中搜索字符串可以正常工作,但是当我在数组中搜索Integer时,输出就是找不到员工编号!

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;
}

更改

int EmpNo[]=new int[a];

Integer EmpNo[]=new Integer[a];

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

正如David Wallace指出的那样, int[]不会自动装箱为Integer[]而是会自动转换为单个对象。

将empNo定义为

Integer [] empNo = new Integer [a] (); 

同样,如果indexOf为-1,则contains也将为false。

EmpNo是原始整数的数组。 List<>无法存储原始数据类型。 它需要Integer 因此,当您这样做时:

Arrays.asList(EmpNo)

它返回List<int[]>而不是List<Integer> 因此, containsindexOf显然与int不匹配。

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

Integer[] EmpNo = new Integer[a];

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

Arrays.asList()无法正常工作?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM