在java中使用for循环实例化对象

时间:2017-04-04 02:34:58

标签: java arrays loops for-loop

我试图采取4/8/12 /等。 args并将args 0-3应用于ball [0],args 4-7 to ball [1]等。目前它将最后一组args设置为每个球,因此两个球的四个值都有4-7的args。

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 );
  }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:-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);