0

プラットフォーム:JCreator

理論的には削除するとうまく折りたたまれるはずなので、私は通常、後ろから数えるforループを使用します。

0123456789

偶数の削除:

i = 9: 0123456789
i = 8 //remove 8: 012345679
i = 7: 012345679
i = 6 //remove 6: 01234579

等々

しかし、オブジェクトが削除されると、この例外が発生します。

スレッド「AWT-EventQueue-0」の例外java.lang.IndexOutOfBoundsException:インデックス:3、サイズ:3

for (int i = dArea.size() - 1; i >= 0; i--) {
    if (dArea.get(i).getOwn() == 1) {
        if (dArea.get(i).getSK() == 2) {
            if (dArea.get(i).getX() - dArea.get(i).getW() / 2 > 1350) {
                dArea.remove(i);
            }
            if (dArea.get(i).getX() + dArea.get(i).getW() / 2 < 0) {
                dArea.remove(i);
            }
            if (dArea.get(i).getY() - dArea.get(i).getH() / 2 > 685) {
                dArea.remove(i);
            }
            if (dArea.get(i).getY() + dArea.get(i).getH() / 2 < 0) {
                dArea.remove(i);
            }
        }
    }
}

なぜ、どのように修正するのか、何かアイデアはありますか?

4

1 に答える 1

3

else ifの代わりに使用してみてくださいif

そうしないと、ループ内で1回繰り返すと、複数の要素が削除される可能性があります(「w」チェックで1回、「h」チェックで1回)。

于 2012-11-01T18:18:26.213 に答える