Einzelnen Beitrag anzeigen

Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#1

-JAVA- Null Pointer Exception - wie abfangen

  Alt 5. Mär 2005, 02:16
Hallo!
Arbeite an meiner Facharbeit (man das is echt übel...) und nun sitz ich hier mal wieder mit meinem JAVA-Mistzeug.
Ich entwickle Tetris und das spielt sich bekanntermaßen mit Steinen.
Mit folgender Methode erzeuge ich die Steine die aus mehreren Blöcken bestehen:
Code:
   public void neuerStein()
   {
      int lTyp     = hatRechner.ganzeZufallszahl(1,6);
      
      int lFarbe = hatRechner.ganzeZufallszahl(1,12);
      if(lFarbe == 11) { lFarbe = 10; } // keine weißen Steine bei weißem Hintergrund
      
      switch(lTyp)
      {
         case 1: hatSteinliste.haengeAn(new Stein(205,180,lFarbe,new Stein(225,180,lFarbe,new Stein(245,180,lFarbe,null)))); hatSteinliste.erbitteStein().zeichneDich(); hatSteinliste.erbitteStein().bewegeDichAbwaerts(); break;
         case 2: hatSteinliste.haengeAn(new Stein(205,180,lFarbe,new Stein(205,160,lFarbe,new Stein(205,140,lFarbe,null)))); hatSteinliste.erbitteStein().zeichneDich(); hatSteinliste.erbitteStein().bewegeDichAbwaerts(); break;
         case 3: hatSteinliste.haengeAn(new Stein(205,180,lFarbe,new Stein(225,180,lFarbe,new Stein(245,180,lFarbe,new Stein(245,160,lFarbe,null))))); hatSteinliste.erbitteStein().zeichneDich(); hatSteinliste.erbitteStein().bewegeDichAbwaerts(); break;
         case 4: hatSteinliste.haengeAn(new Stein(205,180,lFarbe,new Stein(225,180,lFarbe,new Stein(245,180,lFarbe,new Stein(205,160,lFarbe,null))))); hatSteinliste.erbitteStein().zeichneDich(); hatSteinliste.erbitteStein().bewegeDichAbwaerts(); break;
         case 5: hatSteinliste.haengeAn(new Stein(205,180,lFarbe,new Stein(225,180,lFarbe,new Stein(205,160,lFarbe,new Stein(205,140,lFarbe,null))))); hatSteinliste.erbitteStein().zeichneDich(); hatSteinliste.erbitteStein().bewegeDichAbwaerts(); break;
         case 6: hatSteinliste.haengeAn(new Stein(205,180,lFarbe,new Stein(225,180,lFarbe,new Stein(225,160,lFarbe,new Stein(225,140,lFarbe,null))))); hatSteinliste.erbitteStein().zeichneDich(); hatSteinliste.erbitteStein().bewegeDichAbwaerts(); break;
      }
   }
Er zeichnet mir jetzt auch schön meine Steine allerdings bekomme ich immer hässliche Null Pointer Exceptions und ich bin am Überlegen wie ich die Abfangen kann.
Meine Klasse Stein sieht wie folgt aus:
Code:
/*
   Klasse:   Stein
   Autor:   Florian Meier
*/
import sum.ereignis.*;
import sum.komponenten.*;

public class Stein
{
       private final int kBreite = 20, kHoehe = 20;
       private int      zX, zY;
       private Buntstift hatStift;
       private Stein       kenntStein;
       private int       zFarbe = 10;
       
       
       public Stein(int pX, int pY, int pFarbe, Stein pStein)
       {
          hatStift    = new Buntstift();
          zFarbe      = pFarbe;
          hatStift.setzeFarbe(pFarbe);
          hatStift.setzeFuellMuster(1);
          
          zX         = pX;
          zY         = pY;
          
          kenntStein   =   pStein;
          
          this.zeichneDich();
        
       }
       
       public void zeichneDich()
       {       
         hatStift.normal();
         hatStift.bewegeBis(zX, zY);
         hatStift.runter();
         hatStift.zeichneRechteck(kBreite, kHoehe);
         hatStift.hoch();
       }

       public void verbergeDich()
       {
         hatStift.bewegeBis(zX,zY);
         hatStift.radiere();
         hatStift.zeichneRechteck(kBreite, kHoehe);
         hatStift.hoch();
         hatStift.normal();
       }
       
       public void bewegeDichAbwaerts()
       {
         this.verbergeDich();
         zY += kHoehe;
         this.zeichneDich();    
         if(!(kenntStein == null))
         {
            kenntStein.bewegeDichAbwaerts();
         }
       }
}
Und wenn ich das kompiliere dann spuckt mir der Compiler immer lustig "java.lang.NullPointerException" aus...

Ich würde gerne mal eure Meinung hören.
Ich bin mir nämlich nicht ganz sicher wo mein Fehler liegen soll.
Liegt es jetzt an diesem bösen, verschachtelten Erzeugen der Steine mit Übergabe von leeren Objekten oder ist es doch nen Problem mit der Liste. Die wiederum sollte sich auf diese Art und Weise nur den ersten Stein merken, der Rest ist ihr egal...
Kann gerne noch mehr Code posten wenn nötig.

Danke im Vorraus!

MFG Florian

P.S.: Keine blöden Kommentare zu Variablen- oder Funktionsnamen und den eingebundenen Klassen. Wir machen das mit "Stifte und Mäuse"...
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat