我的foreach循环在创建每个实例后立即擦除对象实例

时间:2016-10-29 13:08:07

标签: arrays object foreach nullpointerexception

所以我使用foreach循环来创建一个对象实例数组。所以我有构造函数

Object[] instance = new Object[300],

和foreach循环

for (Object i : instance)
{
    i = new Object(randParam1, randParam2);
    System.out.println("val " + i);
    System.out.println("stored " + instance[j]);
    j++;
}

(j先前已初始化, randParam是随机声明的参数的缩写。

所以我希望这会遍历数组中的300个实例,并为每个实例声明随机参数。我的打印函数“val”显示我确实得到每个循环随机生成的实例。但是我的print函数“stored”返回空值,表明每次循环结束时,值都被声明为null。我哪里错了? 感谢您的帮助,请在任何误用的术语上纠正我。

要继续,我会尝试解释我的目标。所以我有“Object”类,它包含构造函数     public Object(double dis,double ang,double diam,double sp,String col)     {         / 从超类 /访问构造函数         super(dis,ang,diam,sp,col);     } 在我的main函数中,我声明了一个300对象“实例”的数组。然后我继续使用for循环 for(Object i:instance)     i = new Object(randParam1,randParam2等等); 参数是dis,ang,diam等的随机值。我试图为所有300个实例分配随机值。我实现了这个,如我的“Val”打印功能所示,但是我的“存储”功能显示了值。 val和存储的函数不在我的最终代码中。

1 个答案:

答案 0 :(得分:0)

看起来你正在遍历集合中的项目,而没有为每个项目赋值j,因为集合是不可变的。

看看这个SF问题 - Java: adding elements to a collection during iteration

我不太确定你想要实现的目标,但是这个例子就是使用第二个集合。

我猜是这样的:

Object[] instance = new Object[300];
Object[] instanceNew = new Object[300];

for (Object i : instance)
{
    instanceNew.Add(j)
    j++;
}

for (Object i : instanceNew)
{
    System.out.println("val " + i);
}