我想弄清楚爲什麼我得到這個錯誤。我的代碼如下:IndexOutOfBoundsException:索引:7,大小:7
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
查找。 此代碼應該提供組件的最低數量,它確實!但不知怎的,它在到達第8臺計算機系統之前就停止了。它與第一個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);
}
}
Java被索引爲0,因此Java數組中的最後一個有效單元是'size-1'。第八個值在單元格7中。 – twain249 2012-03-23 21:44:07
哪一行是242?這聽起來像列表並不都具有相同的大小... – 2012-03-23 21:46:41
誰是行號547,322,242? – 2012-03-23 21:46:49