【问题标题】:instantiate objects using for loop in java在java中使用for循环实例化对象
【发布时间】:2017-04-04 02:34:58
【问题描述】:

我正在尝试参加 12 年 4 月 8 日等。 args 并将 args 0-3 应用于 ball[0],将 args 4-7 应用于 ball[1] 等。目前它为每个球设置最后一组 args,因此两个球的四个值都有 args 4-7。

int m = 0;
for(int p = 0; p<ss.balln; p++) {
  try {
    System.out.println(p);
     ball[p].posx = Double.parseDouble(args[m]);
    System.out.println(m);
     m++;
     ball[p].posy = Double.parseDouble(args[m]);
    System.out.println(m);

     m++;
     ball[p].velx = Double.parseDouble(args[m]);
    System.out.println(m);
     m++;
     ball[p].vely = Double.parseDouble(args[m]);
    System.out.println(m);
     m++;

  }
  catch (NumberFormatException nfe) {
      System.out.println("Try using numbers.");
      System.exit( 0 );
  }
}

有什么想法吗?

【问题讨论】:

标签: java arrays loops for-loop


【解决方案1】:

大概ball 数组的每个元素都指向同一个对象。您需要为每个偏移量创建一个新实例。

Ball[] balls = new Ball[ss.balln];
for (int i=0; i<balls.length; ++i) {
    balls[i] = new Ball();
]

所以错误出现在您显示的代码上方。

更好的是,使用List 并在需要时创建Ball

List<Ball> balls = new ArrayList<>();
...
   Ball ball = new Ball();
   ...
   balls.add(ball);

【讨论】:

  • 为什么投反对票,人们?这是一个很好的答案,尤其是 OP 甚至没有提供相关代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
相关资源
最近更新 更多