【问题标题】:My foreach loop is wiping object instances immediately after creating each one我的 foreach 循环在创建每个实例后立即擦除对象实例
【发布时间】:2016-10-29 13:08:07
【问题描述】:

所以我使用 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”显示每个循环我确实得到了一个随机生成的实例。但是我的打印函数“存储”返回空值,表明每次循环结束时,这些值都被声明为空。我哪里错了? 感谢您的帮助,请纠正我任何误用的术语。

要继续,我将尝试解释我的目标。所以我有包含构造函数的类“对象” 公共对象(双dis,双ang,双直径,双sp,字符串col) { /从超类访问构造函数/ 超级(dis,ang,diam,sp,col); } 在我的主函数中,我声明了一个包含 300 个对象“实例”的数组。然后我继续使用 for 循环 对于(对象 i:实例) i = 新对象(randParam1、randParam2 等...); 参数是 dis、ang、diam 等的随机值。我正在尝试为所有 300 个实例分配随机值。我确实实现了这一点,如我的“Val”打印函数所示,但随后这些值被擦除,如我的“存储”函数所示。 val 和 stored 函数不会出现在我的最终代码中。

【问题讨论】:

  • 提及编程语言会很好。
  • 这似乎不起作用,所以我会更直接。什么是编程语言?是 Java 吗?

标签: arrays object foreach nullpointerexception


【解决方案1】:

看起来您正在遍历集合中的项目,而没有将值 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);
}

【讨论】:

  • j 值仅用于错误测试。我的原始代码只包含 i = new Object(randParam1, randParam2);我不明白为什么我的“val”和“stored”打印功能没有相同的输出
  • 我会尝试解释我的目标。所以我有包含构造函数的“对象”类
猜你喜欢
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2014-06-28
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多