NumList という ADT を作成し、NumArrayList クラスに実装しました。
実装されたメソッドのうち、配列 [i] に値が挿入される insert(int i, double value) があります。
int numItems は、配列の要素を追跡するカウンターです。
public void insert(int i, double value)
{
if (numItems >= items.length)
{
double[] tempItems = new double [items.length * 2];
for(int j =0 ; j < items.length; j++ )
{
tempItems[j] = items[j];
}
tempItems[items.length] = value;
items = tempItems;
}
else
{
if (i > numItems)
{
items[numItems] = value;
}
else
{
for (int k = i; k < numItems; k++)
{
items[k+1] = items[k];
}
items[i] = value;
}
}
numItems++;
}
は私の方法であり、十分に単純に見えます。
public static void main (String[] args)
{
NumArrayList test;
test = new NumArrayList();
//System.out.println("this is how many initial items the initialized array has.");
//System.out.println(test.items);
test.insert(1, 0.1);
System.out.println("have tried to insert value 0.1 @ position 1, that is the second element in array.");
test.print();
同じクラスに組み込まれた私のテストコード領域です。
コンパイラが ArrayIndexOutOfBoundsException を行 47 または
tempItems[items.length] = value;
アイテムの初期化が間違っていることを伝えようとしていると思いますが、
private double[] items;
private int numItems;
public NumArrayList()
{
items = new double[0];
numItems = 0;
}
しかし、初期化は私よりもはるかに優れたプログラマーによって既に承認されており、これらのエラーは私をどこにも導いていません。おそらく、プログラムのどの部分を調べる必要があるかについてのナッジですか?