0

我有一种情况需要填充对象数组。

这是我的代码:

final class ObjectClass
{
    List<ObjectClass> array;
    private int data;

    ObjectClass(int data)
    {
        this.data = data;
    }

    public void fillArray() {
        array = new LinkedList<>();
        for(int i = 0;i < array.size();i++)
        {
            data++;
            array.add(new ObjectClass(data));
        }

    }
}

我没有得到任何结果。那有什么问题?像这样添加是否有效:array.add(new ObjectClass(data))

在这种情况下,结果和逻辑毫无意义。我只想使 ObjectClass 的数组具有不同的数据值。 我看到,有人使用了一个引用变量并将其存储在一个数组中,但是通过只创建对象来实现它是否有效?

添加打印方法:

    public void display() {
    for(ObjectClass e : array) {
        System.out.println(e);
    }
}
4

4 回答 4

4

什么都没有发生的原因在这里:

for(int i = 0;i < array.size();i++)

之前的行,你刚刚创建了它,array所以它仍然是空的——因此,循环体根本没有被执行。

于 2013-10-27T16:57:34.000 回答
1

每次调用 时fillArray,您都会使用以下命令破坏数组中的数据(但是它会在其中出现):

array = new LinkedList<>();

首先,将您的字段更改为使用预先初始化,这样您就不会在每次方法调用时都覆盖您的字段。

List<ObjectClass> array = new LinkedList<>();

现在,为你的方法。你不进入循环,因为array总是空的。根据您要完成的任务,您应该传递对象,或者创建它的副本n次。

public void fillArray(int times) {

    for(int i = 0;i < times; i++) {
        data++;
        array.add(new ObjectClass(data));
    }

}

最后,请注意,如果循环确实有效,data并且array.size()将是等效的(只要您没有删除任何内容)。我会重新考虑该变量的目的/意图。

于 2013-10-27T17:02:19.360 回答
0

声明 List<ObjectClass> arrayas ,它将通过在对象级别创建一个notstatic来完成您想要实现的目标Class variable

于 2013-10-27T16:54:32.687 回答
0

问题是array(顺便说一句,它实际上不是一个数组 - 它的名称错误)最初的大小为 0,因此该方法什么也不做。

您忘记考虑要“填充”数据结构的数字数量。

于 2013-10-27T16:56:47.990 回答