我已稱爲NumList一個ADT,並已在一類NumArrayList插入元件插入到數組索引越界的java
的實現的方法實現它的,有一個插入件(INT I,雙值),其中值插入到數組[i]中。
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();
是我的測試代碼區,內置到同一個類中。
我收到一個錯誤的編譯器要求我必須在47行一個ArrayIndexOutOfBoundsException,或在
tempItems[items.length] = value;
我相信這是想告訴我,我的項目的初始化是錯誤的,
private double[] items;
private int numItems;
public NumArrayList()
{
items = new double[0];
numItems = 0;
}
但是初始化已經被一個比我更好的程序員批准了,這些錯誤導致我無處可去。也許是對我應該研究的程序的哪一部分有所瞭解?
這是真的,但在發佈的代碼中,tempItems.length等於items.length * 2,因此tempItems [items.length]並不是真正的問題。除非當然,如構造函數所示,這兩個都是零。 – Thorn