2011-10-13 87 views
1

這是我PROGRAMM:如何在運行時更改java中動態數組的值?

public class Basket { 
private Item[] shops = { new Item("1",1)} ; 

public void storeItems(Item it){ 

     if (arraysIndex > shops.length){ 
      resizeArray(shops); 

     } 
     *shops[arraysIndex++] = {it}; 
     *shops[arraysIndex++] = {new Item(it.getName(),it.getPrice())}; 

    } 

    public <T> T[] resizeArray(T[] arrayToResize){ 

     int newCapacity = arrayToResize.length *2; 
     T[] newArray = (T[]) Array.newInstance(arrayToResize[0].getClass(), newCapacity); 
     System.arraycopy(arrayToResize, 0, newArray, 0, arrayToResize.length); 

     return newArray; 
    } 

} 
在我所表示的佈線

*我會得到這樣的這個錯誤:

「數組常量只能在初始化中使用」我不要不知道如何解決在Java中的問題請諮詢我。

問候

回答

4

只需輸大括號:

shops[arraysIndex++] = it; 
    shops[arraysIndex++] = new Item(it.getName(),it.getPrice()); 

此外,還有一個錯誤的位置:

if (arraysIndex > shops.length){ 
     resizeArray(shops); 
    } 

由於Java數組索引從零開始,正確的比較是if (arraysIndex >= shops.length)

此外,如果您使用Java 1.6+,resizeArray()可能基於Arrays.copyOf()

最後,你似乎幾乎做了什麼ArrayList<T>這樣做 - 爲什麼不簡單地使用後者,而不用擔心重新分配等?

相關問題