2017-04-04 7 views
-1

私は4/8/12 /などを取ろうとしています。 args 0-3をball [0]、args 4-7をball [1]などに適用する。現在、argsの最後のセットをすべてのボールに設定するので、両方のボールは4つの値に対してargs 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

どのようにあなたが 'ball'配列をインスタンス化している –

+1

(https://stackoverflow.com/help/mcve)[、最小限の完全な、かつ検証例を追加してください]? –

+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は関連するコードを提供していませんでした。 –

関連する問題