0

我正在尝试将图像对象(乌龟的图片)添加到 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);
}

提前感谢您的帮助。如果您需要更多信息来解决此问题,请告诉我。

4

2 回答 2

2

您的呼叫add似乎是错误的:

list.add(i+r, turtle);

您正在向索引添加一个随机数,几乎可以肯定它大于列表的大小。引用Javadocs 中的add方法

抛出:

IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())

于 2013-09-26T20:33:14.923 回答
2

打个电话

ArrayList<Turtle> list = new ArrayList<Turtle>();
...
list.add(i+r, turtle);

wherei+r可能在第一次迭代时计算为大于 0 的数字,您将立即得到一个IndexOutOfBoundsException. javadoc 指出:

IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())

于 2013-09-26T20:33:04.357 回答