tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
207
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    klanawagna klanawagna ist offline Mitglied Gold
    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
    klanawagna
     
    Toast. Any bread does. Just add heat.

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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ß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    SPiKEe Tutorials.de Gastzugang
    typischer tippfehler

    da meineswissens eine HashMap genau wie ArrayList oder dieser ganze iterator-kram nur bis
    Code java:
    1
    
    for(int i=0; i<map.size(); i++)
    und nicht bis
    Code 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 ...
    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
    Code 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();
    }
    drumbauen ... das ganze über console starten und den Stack hier posten
     

  4. #4
    klanawagna klanawagna ist offline Mitglied Gold
    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.

  5. #5
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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ß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  6. #6
    klanawagna klanawagna ist offline Mitglied Gold
    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.

  7. #7
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Wie groß ist dein Counter?

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  8. #8
    SPiKEe 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 ...
     

  9. #9
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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 ?*
    Der Haken ist, ich hab nur einmal geklickt.
    Dass die Server belastet sind, bekomme ich momentan nicht mit, da ich nur per Edge ins Internet gehe.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  10. #10
    klanawagna klanawagna ist offline Mitglied Gold
    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
    klanawagna
     
    Toast. Any bread does. Just add heat.

Ähnliche Themen

  1. Referenzen HashMap -> HashMap
    Von Fulk im Forum Java Grundlagen
    Antworten: 7
    Letzter Beitrag: 01.05.09, 18:23
  2. Antworten: 4
    Letzter Beitrag: 04.09.07, 16:44
  3. HashMap
    Von jiim im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 2
    Letzter Beitrag: 25.07.07, 16:59
  4. Antworten: 2
    Letzter Beitrag: 30.09.05, 15:56
  5. Antworten: 0
    Letzter Beitrag: 25.07.05, 17:23