0

画像オブジェクト (カメの写真) を ArrayList に追加しようとしており、それぞれの個別のオブジェクトが画面の別の場所に表示されます。画像を A​​rrayList に追加すると、IndexOutofBounds エラーが発生し、オブジェクトの 1 つだけが画面に表示されます。

インデックスを小さい値に設定しようとしましたが、画面に表示されるタートルは 1 つだけです。

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

のような呼び出しで

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

最初のi+r反復で 0 より大きい数値に評価される場合、すぐにIndexOutOfBoundsException. javadoc には次のように記載されています。

IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())

于 2013-09-26T20:33:04.357 に答える
2

への呼び出しaddが間違っているようです:

list.add(i+r, turtle);

インデックスに乱数を追加していますが、これはほぼ確実にリストのサイズより大きくなっています。メソッドの Javadocaddからの引用:

スロー:

IndexOutOfBoundsException - インデックスが範囲外の場合 (index < 0 || index > size())

于 2013-09-26T20:33:14.923 に答える