在下面的示例代码中,我移动了两个大型数组,40,000多个索引,x和y坐标。但是,我在达到最终索引时被apply
抛出 - 正如我已经通过大量测试推断的那样。我知道当引用一个超出范围的索引时会抛出这个异常,但是,我不认为我指的是任何越界索引。此外,好像只会在某些计算机上抛出此异常。任何形式的帮助都非常感谢。
java.lang.IndexOutOfBoundsException
答案 0 :(得分:4)
这里的问题是你在内循环中递增i
,而不是在内循环完成之后。
以下代码应该表现得更好:
for(int i = 0; i < arrayList.size()-1; ++i){
for(int j = 0; j < arrayList2.size()-1; ++j){
g2d.setColor(col);
g2d.setStroke(new BasicStroke(1));
g2d.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.drawLine(arrayList.get(i), arrayList2.get(j), arrayList.get(i+1), arrayList2.get(j+1));
}
}
如果arrayList
有10个元素,arrayList2
有20个元素,那么您的代码将迭代内部循环19次。在内循环的每次运行中,您将增加i
和j
。在内循环的第十次迭代之后,i
和j
都等于10,代码arrayList.get(i+1)
将失败。