2017-04-04 188 views
-1

我正在嘗試使用4/8/12/etc。參數0-3應用於球[0],4-7參考球[1]等等。目前它將最後一組參數設置爲每個球,所以兩個球的四個值都具有參數4-7。在java中使用for循環實例化對象

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

任何想法?

+2

[請添加一個最小的,完整的,和可覈查的示例](https://stackoverflow.com/help/mcve) –

+1

你是如何實例化'ball'陣列? –

+0

我沒有看到任何在這裏實例化的對象......除了'Double's或'NumberFormatException'外。 –

回答

-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); 
+0

爲什麼倒票,人?這是一個非常好的答案,尤其是OP甚至沒有提供相關的代碼。 –