![]() |
-JAVA- Null Pointer Exception - wie abfangen
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:
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.
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; } } Meine Klasse Stein sieht wie folgt aus:
Code:
Und wenn ich das kompiliere dann spuckt mir der Compiler immer lustig "java.lang.NullPointerException" aus...
/*
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(); } } } 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 :hi: P.S.: Keine blöden Kommentare zu Variablen- oder Funktionsnamen und den eingebundenen Klassen. Wir machen das mit "Stifte und Mäuse"... :kotz: |
Re: -JAVA- Null Pointer Exception - wie abfangen
Hi,
"Stifte und Mäuse" gibts auch für JAVA? :shock: 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 |
Re: -JAVA- Null Pointer Exception - wie abfangen
Liste der Anhänge anzeigen (Anzahl: 1)
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:
MfG Florian :hi:
public class Steinliste extends Liste
{ public Stein erbitteStein() { return (Stein) super.erbitteAktuelles(); } } |
Re: -JAVA- Null Pointer Exception - wie abfangen
Zitat:
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 |
Re: -JAVA- Null Pointer Exception - wie abfangen
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. |
Re: -JAVA- Null Pointer Exception - wie abfangen
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 :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz