ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
207
207
EMPFEHLEN
-
02.04.10 08:55 #1
- Registriert seit
- May 2009
- Beiträge
- 116
Hallo!
Ich sitze hier schon seit geraumer Zeit vor einem Problem, das mich frustriert. Ich vermute die Lösung ist extrem offensichtlich, aber ich hab mich hier schon rein verbissen! Es geht darum, dass eine "Bestellung" Klasse eine Hashmap enthält. Diese hat allerdings Probleme mit der Speicherung und Anzeige. Jedes mal beim Aufruf der zeigeAn()-Funktion wirft er mir eine Null-Pointer-Exception. Ich hoffe es kann mir wer helfen, bitte!!
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
package Bestellvorgang; import java.io.*; import java.util.*; import personen.Kunde; import personen.Lieferant; public class Bestellung implements java.io.Serializable { private Kunde kunde; private HashMap<Integer, Bestellposition> positionen; private Integer count; public Bestellung(Kunde kund) { positionen = new HashMap<Integer, Bestellposition>(); kunde = kund; count = 0; } public void nimmAuf(Bestellposition pos) { positionen.put(count, pos); count++; } public String zeigeAn() { Ware ware; Kundenrabatt rabatt = new Kundenrabatt(); Bestellposition pos = new Bestellposition(); String output = new String(); for(int i=0;i<=count;i++) { //System.out.println(positionen.length); pos = positionen.get(i); System.out.println("i:" + i); ware = pos.gibWare(); System.out.println("Count:" + count); //System.out.println(rabatt.berechneRabattpreis(ware.gibPreis())); output += "<html> Nr. " + ware.gibNummer() + ": " + ware.gibBezeichnung() + " zu " + pos.gibMenge() + " Stk."; output += "<br>Listenpreis: " + ware.gibPreis()+" - Kundepreis: "+ rabatt.berechneRabattpreis(ware.gibPreis()); output += "<br>fuer: " + kunde.gibName() + "</html>"; //Lieferant lief = ware.getLieferant(); // output += "\nvon: " + lief.toString(); } return output; } }
Vielen lieben dank!
lg
klanawagnaToast. Any bread does. Just add heat.
-
Hallo,
da du die Exception nicht mit gepostet hast, kann ich nur raten. Du musst mal schauen, in welcher Zeile die Exception geworfen wird. In dieser Zeile ist ein Object null.
pos, ware, rabatt oder kunde könnten null sein. Ich weiß beispielsweise nicht wo rabatt her kommt.
Kontrolliere einfach mal diese Objecte.
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
02.04.10 09:29 #3SPiKEe Tutorials.de Gastzugang
typischer tippfehler
da meineswissens eine HashMap genau wie ArrayList oder dieser ganze iterator-kram nur bis
und nicht bisCode java:1
for(int i=0; i<map.size(); i++)
ausgelesen werden können würde ich dir empfehlen einfach mal dieses "=" - zeichen weg zu nehmen ...Code java:1
for(int i=0; i<=map.size(); i++)
es kann gut möglich sein das du auf grund dieser tatsache einfach über das ende deiner map hinaus rennst wo die werte logischweise NULL sind ...
andern falls kann es eigentlich nur sein das eine der getter-methoden NULL zurückgibt ...
wie aber bereits gesagt : ohne StackTrace können wir hier nur raten ... also einfach ein
drumbauen ... das ganze über console starten und den Stack hier postenCode java:1 2 3 4 5 6 7 8
try { //CODE } catch(Exception e) //wichtig das du Exception nimmst um auch wirklich JEDEN von Exception abgeleiteten fehler bekommst ... ob Error sinnvoll wäre wage ich zu bezweifeln { e.printStackTrace(); }
-
02.04.10 09:43 #4
- Registriert seit
- May 2009
- Beiträge
- 116
Danke erstmal, die Nullpointerexception wurde wegen des Rabattes geworfen, aber jetzt habe ich ihn überprüft und wirklich hineingeschrieben

neues Problem; die auflistung! Er listet mir immer nur den ersten auf, wenn ich bei der forschleife das = weggebe, wirft er auch eine Nullpointer-Exception
Ich danke euch bis jetzt schon mal!
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
public String zeigeAn() { Ware ware; Kundenrabatt rabatt = null; if(kunde.bekommtRabatt()) { rabatt = new Kundenrabatt(); } Bestellposition pos = new Bestellposition(); String output = new String(); for(int i=0;i<count;i++) { //System.out.println(positionen.length); pos = positionen.get(i); System.out.println("i:" + i); ware = pos.gibWare(); System.out.println("Count:" + count); //System.out.println(rabatt.berechneRabattpreis(ware.gibPreis())); output += "<html> Nr. " + ware.gibNummer() + ": " + ware.gibBezeichnung() + " zu " + pos.gibMenge() + " Stk."; output += "<br>Listenpreis: " + ware.gibPreis(); if(kunde.bekommtRabatt()) { output +=" - Kundepreis: "+ rabatt.berechneRabattpreis(ware.gibPreis()); } output += "<br>fuer: " + kunde.gibName() + "</html>"; //Lieferant lief = ware.getLieferant(); // output += "\nvon: " + lief.toString(); } return output; }
Toast. Any bread does. Just add heat.
-
Hallo,
du hast wieder keine Exception gepostet. Aber mal ein Tipp dazu. Wenn eine Nullpointer-Exception geworfen wird, musst du dir anschauen in welcher Zeile diese geworfen wird (steht ja dabei). Dann ist das Object, das du in dieser Zeile benutzt null. Sind in dieser Zeile mehrere Objecte musst du halt schauen welches davon null ist.
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
02.04.10 10:50 #6
- Registriert seit
- May 2009
- Beiträge
- 116
mhm, tschuldigung, muss meine Aussage zurückziehen: keine Exception, sondern es wird einfach nur das erste Element angezeigt, sonst nix! Woran liegt das?
Toast. Any bread does. Just add heat.
-
Wie groß ist dein Counter?
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
02.04.10 13:15 #8SPiKEe Tutorials.de Gastzugang
DOPPEL-POST FTW
... als tipp : nächste mal EINMAL auf ANTWORTEN und dann WARTEN ... die server von tutorials sind zur zeit gut belastet .. ich hatte vorhin schon das problem
*warum gibt es immer wieder leute die einfach nicht abwarten können ?*
zum problem :
warum die NullPointer geworfen wird nur weil du aus <= ein < ist so nicht offensichtlich ... ich kann dennoch eine erklärung abgeben
da COUNT = 0 ist *siehe intialiesirung* und nicht wie du gedacht hast COUNT = positionen.size() *oder sowas* und deine bedingung dann 0<=0 / 0<0 ist wir das ganze nur EINMAL ausgeführt weil beim zweiten durchlauf dann 1<=0 / 1<0 ist und nunmal FALSE liefert was zum sofortigen abbruch des for-loops führt ...
du solltest vllt erstmal COUNT richtig initialisieren ...
-
Der Haken ist, ich hab nur einmal geklickt.DOPPEL-POST FTW ... als tipp : nächste mal EINMAL auf ANTWORTEN und dann WARTEN ... die server von tutorials sind zur zeit gut belastet .. ich hatte vorhin schon das problem
*warum gibt es immer wieder leute die einfach nicht abwarten können ?*
Dass die Server belastet sind, bekomme ich momentan nicht mit, da ich nur per Edge ins Internet gehe.
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
04.04.10 10:11 #10
- Registriert seit
- May 2009
- Beiträge
- 116
AAAAAAAHHHHHH! Zum verzweifeln. Ich habe das Problem jetzt gelöst in dem ich... moment, kurz festhalten: Statt eines Labels eine JTextArea verwende. Lösung des Problems: Das JLabel zeigt nichts mehr nach dem schließen des </html> Tags an, mit der Schleife und co hat alles gepasst xD.
na dann, danke für eure Mithilfe!
lg
klanawagnaToast. Any bread does. Just add heat.
Ähnliche Themen
-
Referenzen HashMap -> HashMap
Von Fulk im Forum Java GrundlagenAntworten: 7Letzter Beitrag: 01.05.09, 18:23 -
HashMap funktioniert nicht! Bin absoluter Anfänger und brauche drinend Hilfe
Von P_H_I_L im Forum JavaAntworten: 4Letzter Beitrag: 04.09.07, 16:44 -
HashMap
Von jiim im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 2Letzter Beitrag: 25.07.07, 16:59 -
Je nach übergebenen Wert eine Zeile anzeigen oder nicht anzeigen
Von Bato_Loco im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 30.09.05, 15:56 -
Wie Daten speichern? Hashtable/Hashmap taugt nicht
Von genfrosch im Forum JavaAntworten: 0Letzter Beitrag: 25.07.05, 17:23





Zitieren

Login





