AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein -JAVA- Null Pointer Exception - wie abfangen

-JAVA- Null Pointer Exception - wie abfangen

Ein Thema von flomei · begonnen am 5. Mär 2005 · letzter Beitrag vom 6. Mär 2005
Antwort Antwort
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
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: -JAVA- Null Pointer Exception - wie abfangen

  Alt 5. Mär 2005, 07:44
Hi,

"Stifte und Mäuse" gibts auch für JAVA?
Wir machen dieses Zeug mit Delphi, ist genauso schlimm.

Aber nun zu Deinem Problem:
Hast Du versucht, das Programm schrittweise ausführen zu lassen, um den Ort der NullPointer-Exception ausfindig zu machen?
Edit: Was eventuell noch interessant wäre, ist die Klasse Steinliste.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

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

Re: -JAVA- Null Pointer Exception - wie abfangen

  Alt 5. Mär 2005, 22:35
Sag mir wie ich bei RealJ ein Programm Schritt-für-Schritt ausführen lassen kann und ich will das gerne tun...

Hier mal die Steinliste. Das ist eigentlich nur Typecasting deswegen häng ich die Liste gleich auch mal an...
Code:
public class Steinliste extends Liste
{
  public Stein erbitteStein()
  {
     return (Stein) super.erbitteAktuelles();
  }
}
MfG Florian
Angehängte Dateien
Dateityp: txt liste.java_160.txt (4,5 KB, 6x aufgerufen)
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: -JAVA- Null Pointer Exception - wie abfangen

  Alt 6. Mär 2005, 09:08
Zitat von flomei:
Sag mir wie ich bei RealJ ein Programm Schritt-für-Schritt ausführen lassen kann und ich will das gerne tun...
Du hast ne Java IDE, mit der man nicht schrittweise ausführen kann?
Da würde ich mir aber schnell ne bessere IDE besorgen (Eclipse oder eine andere kostenfreie...).

In der Liste konnte ich ansonsten beim ersten Anschauen keine Fehler finden. Also muss der Fehler wohl wo im Detail stecken...

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5

Re: -JAVA- Null Pointer Exception - wie abfangen

  Alt 6. Mär 2005, 10:52
Moin Florian,

das klingt, als ob Du auf ein Objekt zugreifen willst, daß noch nicht erzeugt wurde. Wenn Java die Exception meldet, dann wird doch die gesamte Aufruf-Historie ausgegeben (mit Zeilennummer). So kannst Du feststellen, wo in Deinem Programm der fehler auftritt. Und eine Nullpointer-Exception sollte man IMHO nicht abfangen sondern vermeiden.
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

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

Re: -JAVA- Null Pointer Exception - wie abfangen

  Alt 6. Mär 2005, 12:16
Null Pointer Exception findet in Zeile 106 statt, das ist dort wo die "Steine" erzeugt werden.
Vielleicht sollte ich lieber ne Klasse Block erzeugen die sich in der Klasse Stein befindet...
Mal sehen, der Tag ist noch lang...

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz