如何在运行时更改java中动态数组的值?

时间:2011-10-13 08:01:55

标签: java arrays

这是我的程序:

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中的问题请告诉我。

问候

1 个答案:

答案 0 :(得分: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>所做的事情 - 为什么不简单地使用后者而不担心重新分配等?