2011-10-13 43 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>这样做 - 为什么不简单地使用后者,而不用担心重新分配等?

相关问题