我试图采取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 );
}
}
有什么想法吗?
答案 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);