2017-04-04 3 views
-1

Ich versuche, 4/8/12/etc zu nehmen. Args und wenden Args 0-3 zu Ball [0], Args 4-7 zu Ball [1], etc. Derzeit setzt es die letzte Reihe von Args zu jedem Ball, so haben beide Bälle 4-7 für seine vier Werte.Objekte instanziieren mit for-Schleife in Java

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

Irgendwelche Ideen?

+2

[Bitte ein minimales, vollständig und nachprüfbar Beispiel] (https://stackoverflow.com/help/mcve) –

+1

, wie Sie den 'ball' Array instanziieren? –

+0

Ich sehe hier keine Objekte instanziiert ... außer vielleicht 'Double' oder eine 'NumberFormatException'. –

Antwort

-1

Vermutlich zeigt jedes Element des Arrays ball auf dasselbe Objekt. Sie müssen für jeden Offset eine neue Instanz erstellen.

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

Also der Fehler ist in dem Code über dem, den Sie gezeigt haben.

Noch besser, verwenden Sie eine List und erstellen Sie eine Ball bei Bedarf.

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

Warum die Down-Stimmen, Leute? Dies ist eine sehr gute Antwort, insbesondere, dass OP nicht einmal relevanten Code zur Verfügung gestellt hat. –

Verwandte Themen