有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在不同的数据类型上使用if条件?

我有一个整数数组列表,我想检查该列表上的特定数据是否与声明的变量相同,但是,如果我使用if(variable == arraylist.get(i)它不起作用,我试图找到将列表转换为整数的方法,但找不到正确的解决方案

public static void main(String[] args) {
    List reg = new ArrayList();
    //int add;
    reg.add(2);
    reg.add(5);
    reg.add(6);

    Random rand = new Random();
    int newReg = rand.nextInt(4)+1;
    for(int i = 0; i < reg.size(); i++){
        if(newReg == reg.get(i)){
            //do stuff
        }
    }
}

共 (3) 个答案

  1. # 1 楼答案

    问题是自动装箱隐藏了Java中primitve类型和引用类型之间的转换。它通常运行良好,但在本例中,您将对象引用与整数进行比较。尝试以下方法:

    public static void main(String[] args) {
        List<Integer> reg = new ArrayList<>();
        //int add;
        reg.add(2);
        reg.add(5);
        reg.add(6);
    
        Random rand = new Random();
        int newReg = rand.nextInt(4)+1;
        for(int i = 0; i < reg.size(); i++){
            if(newReg == reg.get(i).intValue()){
                //do stuff
            }
        }
    }
    
  2. # 2 楼答案

    当你注册的时候。获取(i)它正在返回对象。这里有多个选项: A.将列表定义为整数列表,即list reg=new ArrayList(); B.将cast对象键入int

    首选选项是A

  3. # 3 楼答案

    我刚刚尝试了你的代码,在Netbeans中,它在你比较的行中显示了一个错误。一般的规则是,在比较任何引用类型时,不要使用“==”(除非你真的想检查它是否是同一个对象),而是使用equals()。以下工作如下:

        List reg = new ArrayList();
        //int add;
        reg.add(2);
        reg.add(5);
        reg.add(6);
    
        Random rand = new Random();
        int newReg = rand.nextInt(4) + 1;
        for (int i = 0; i < reg.size(); i++) {
            if (reg.get(i).equals(newReg)) {
                System.out.println("aa");
            }
        }