2016-11-21 2 views
-2

ich eine Animation mache in Bearbeitung es eine Simulation einer Kugel nach oben und kommt nach unten ist, habe ich eine Fehlermeldung, ‚Nullpointer‘ es erscheint, hält Ich werde den Code und zeigen den Fehler Ort geben:Wie Debuggen einer NullPointerException in der Verarbeitung?

Obj[] objs = new Obj[100]; 

void setup(){ 
    size(1000, 1000); 
} 

void draw(){ 
    background(250); 
    for(int i = 0; i < objs.length; i++){ 
    objs[i].render(); 
    objs[i].up(); 
    objs[i].run(); 
    } 
} 

the error is at objs[i].render(); 

hier ist der Code für Obj:

class Obj{ 
    float x; 
    float y; 
    float speed; 
    float pspeed; 
    float velocity; 
    void render(){ 
    fill(0); 
    ellipse(x, y, 5, 5); 
    } 
    void up(){ 
    x = random(-1000, 1000); 
    y = y-1010; 
    } 
    void run(){ 
    speed = random(4, 6); 
    pspeed = speed; 
    velocity = 0.05; 
    while(y<random(700, 1100)){ 
     y=y-speed; 
     speed=speed-velocity; 
    } 

    while(y>0){ 
     y=y+pspeed; 
     pspeed = pspeed - velocity; 
    } 
    } 
} 
+0

Sie zeigen nicht den Kontext des Aufrufs zum Zeichnen an. Ich würde vermuten, dass der Grund für die NPE darin liegt, dass Sie die Elemente von Objs nicht initialisieren –

Antwort

0

Diese Zeile ein Array erstellt, die 100 Fälle von Obj halten kann:

Obj[] objs = new Obj[100]; 

Aber es erstellt tatsächlich keine Instanzen. Mit anderen Worten, Ihr Array enthält 100 null Werte.

Dann durchlaufen Sie diese Werte null und versuchen, Funktionen auf ihnen aufzurufen, was Ihren Fehler verursacht.

das Problem zu beheben, Sie wollen wahrscheinlich nur Ihre Array mit Instanzen füllen:

void setup(){ 
    size(1000, 1000); 

    for(int i = 0; i < objs.length; i++){ 
    objs[i] = new Obj(); 
    } 
} 

Shameless Eigenwerbung: Ich schrieb here ein Tutorial über Arrays in Bearbeitung zur Verfügung.

Verwandte Themen