2

私はこれを持っています:

public class DoubleList<Key, Elem> implements ADTDoubleList<Key, Elem> {

    private Vector<Node<Key, Elem>> leftRight = new Vector<Node<Key, Elem>>(2);
    private int[] numLeftNumRight = new int[2];

    public DoubleList() {
        this.leftRight.set(0, null);
        this.leftRight.set(1, null);
        this.numLeftNumRight[0] = 0;
        this.numLeftNumRight[1] = 0;
    }
}

そしてそれはArrayIndexOutOfBoundsExceptionをスローします。

どうしてか分かりません。誰かが私を助けてもらえますか?

4

1 に答える 1

4

そのインデックスがまだ占有されていない場合、Vectorまたは他の要素に要素を設定することはできません。Listを使用new Vector<Node<Key, Elem>>(2)することで、ベクトルに最初は2つの要素の容量があることを確認できますが、それでも空であるため、インデックスを使用し getたり、使用したりすることはできません。set

言い換えれば、リストはそのインデックスがまだ有効になるほど大きくなっていません。代わりにこれを使用してください:

this.leftRight.add(null);  //index 0
this.leftRight.add(null);  //index 1

次のこともできます。

this.leftRight.add(0, null);
this.leftRight.add(1, null);
于 2011-03-15T20:12:44.030 に答える