初期化されたベクトル上のArrayIndexOutOfBoundSexception
-
24-10-2019 - |
質問
私はこれを持っています:
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を投げます。
どうしてか分かりません。誰かが私を助けることができますか?
解決
aに要素を設定することはできません Vector
またはその他 List
そのインデックスがまだ占有されていない場合。使用して new Vector<Node<Key, Elem>>(2)
ベクトルが最初に持っていることを確認しています 容量 2つの要素の場合、しかしそれはまだ空です。 get
tingまたは set
任意のインデックスを使用しても機能しません。
言い換えれば、リストは、そのインデックスがまだ有効であるほど十分に大きくなっていません。代わりにこれを使用してください:
this.leftRight.add(null); //index 0
this.leftRight.add(null); //index 1
あなたもできます:
this.leftRight.add(0, null);
this.leftRight.add(1, null);
所属していません StackOverflow