我试图弄清楚为什么会出现此错误。我的代码如下:

 ArrayList lowestQuant = new ArrayList();
    for (int i = 0; i < aRes1.size(); i++) {
        int var = Math.min(casesQuant.get(i), mainboardQuant.get(i));
        int var2 = Math.min(var, cpuQuant.get(i));
        int var3 = Math.min(var2, ramQuant.get(i));
        int var4 = Math.min(var3, graphicsQuant.get(i));
        lowestQuant.add(var4);
        System.out.println(aRes1.get(i) +" quantity: "+lowestQuant.get(i));
    }


aRes1是长度为8个计算机系统的计算机系统的数组列表。

我需要找到每个计算机系统中数量最少的组件,因此需要Math.min和所有ArrayList-index查找。
此代码应为组件提供最少的数量,而且可以做到!但是它以某种方式在到达第八计算机系统之前就停止了。它与第一个7完美配合。
谁能告诉我问题是什么?
我查看了很多这些错误,并尝试设置i=1.size()-1/+1没有任何帮助。

提前致谢!
错误:

 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 7, Size: 7
            at java.util.ArrayList.RangeCheck(ArrayList.java:547)
            at java.util.ArrayList.get(ArrayList.java:322)
            at databasen.Database.ComputerSystems(Database.java:242)
            at databasen.Database.menuLVL1(Database.java:70)
            at databasen.Database.mainMenu(Database.java:61)
            at databasen.Database.main(Database.java:37)
    Java Result: 1


澄清一下:所有使用的数组列表的长度都相同,因为它们是从数据库制成的。这是更多代码,因此您可以了解如何创建数组列表::

ArrayList aRes1 = new ArrayList();
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("SELECT catchyname FROM computersystems");
        System.out.printf("Computer sytems:\n");
        while (rs.next()) {
            String answer = rs.getString("catchyname");
            aRes1.add(answer);
        }

        // Cases
        ArrayList aRes2 = new ArrayList();
        rs = st.executeQuery("SELECT cases FROM computersystems");
        while (rs.next()) {
            String answer = rs.getString("cases");
            aRes2.add(answer);
        }
        ArrayList<Integer> casesQuant = new ArrayList<Integer>();
        for (int i=0;i<aRes2.size();i++){
            ResultSet rs2 = st.executeQuery("SELECT currentquantity FROM components "
                    + "WHERE name ="+"'"+aRes2.get(i)+"'");
            while (rs2.next()) {
                int answer2 = rs2.getInt("currentquantity");
                casesQuant.add(answer2);
            }
        }

最佳答案

数组列表中的任何一个都有7个元素。尝试检查行号547和322。您会知道哪个。

07-24 09:25