我正在尝试将图像对象(乌龟的图片)添加到ArrayList,并让每个单独的对象出现在屏幕上的其他位置。当我将图像添加到ArrayList时,我得到一个IndexOutofBounds错误,并且屏幕上只显示其中一个对象。
我已尝试将索引设置为较小的值,但屏幕上只显示一个Turtle。
ArrayList<Turtle> list = new ArrayList<Turtle>();
public void update(Graphics g) {
for(int i=0; i<3; i++){
Random randomNumber = new Random();
int r = randomNumber.nextInt(50);
list.add(i+r, turtle);
turtle.update(g);
}
}
我的Turtle类中的方法更新如下:
public void update(Graphics g) {
// Move the turtle
if (x < dest_x) {
x += 1;
} else if (x > dest_x) {
x -= 1;
}
if (y < dest_y) {
y += 1;
} else if (y > dest_y) {
y -= 1;
}
// Draw the turtle
g.drawImage(image, x, y, 100, 100, null);
}
提前感谢您的帮助。如果您需要更多信息来解决此问题,请与我们联系。
答案 0 :(得分:2)
拨打电话
ArrayList<Turtle> list = new ArrayList<Turtle>();
...
list.add(i+r, turtle);
其中i+r
在第一次迭代时可能会计算为大于0的数字,您将立即获得IndexOutOfBoundsException
。 javadoc声明:
IndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 ||) index&gt;尺寸())
答案 1 :(得分:2)
您对add
的来电似乎有误:
list.add(i+r, turtle);
您正在向索引添加一个随机数,这几乎肯定会大于列表的大小。引自the Javadocs for the add
method:
<强>抛出:强>
IndexOutOfBoundsException - 如果索引超出范围 (index&lt; 0 || index&gt; size())