Я пытаюсь понять, почему я получаю эту ошибку. Мой код выглядит следующим образом:IndexOutOfBoundsException: Index: 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
Какая строка 242? Похоже, что списки не все имеют одинаковый размер ... –
Whitch - это номер строки 547, 322, 242 ?? –