所以我有两个arraylists,一个是多维的,另一个只是一个arraylist。我似乎总是出错了:
线程中的异常" main" java.lang.IndexOutOfBoundsException:索引:1,大小:1 在java.util.ArrayList.rangeCheck(未知来源) at java.util.ArrayList.get(Unknown Source) at is15147029.main(is15147029.java:303)
我不知道为什么,我在这里做的是将来自另一个数组的整数归入数组列表。我已经检查过数组是否有整数但是每当我尝试将整数添加到arraylist中时我都会收到错误。
ArrayList<Integer> selOrd = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> ordIndex = new ArrayList<ArrayList<Integer>>();
for(int i = 0; i < finalCost.length; i++) {
int lowCost = 0;
if(finalCost[i] > lowCost) {
lowCost = finalCost[i];
selOrd.add(0, finalCost[i]);
}
else if(finalCost[i] <= lowCost ) selOrd.add(finalCost[i]);
}
//Get Average Fitness Cost
for(int i = 0; i < finalCost.length; i++) total = total + finalCost[i];
avg = total/(finalCost.length);
//Sort into s1, s2, s3
for(int i = 0; i < selOrd.size(); i++) {
if(selOrd.get(i) > avg) ordIndex.get(0).add(selOrd.get(i));
if(selOrd.get(i) == avg) ordIndex.get(1).add(selOrd.get(i));
if(selOrd.get(i) < avg) ordIndex.get(2).add(selOrd.get(i));
}
将整数添加到selOrd时似乎发生错误。
Ant的帮助将不胜感激,我的代码中的另一个数组列表也有类似的问题。谢谢
答案 0 :(得分:1)
问题很可能是硬编码索引值的结果。
具体为get(1)
和get(2)
。
您必须验证ordIndex.size() >= 3
中的内容
为了安全地执行get(2)
和
ordIndex.size() >= 2
安全执行get(1)
。
另外,
注意错误信息。
例外明确指出index 1, size 1
。
如果数组的大小是一个元素,那么任何访问数组中第二个元素(索引值为1)的尝试都必须失败。
答案 1 :(得分:0)
乍一看你的代码,我没有看到你向ArrayLists的ordIndex ArrayList添加任何东西,所以每次调用它都会引发异常。