harald_ Skrevet 12. februar 2008 Skrevet 12. februar 2008 (endret) Jeg har en sammenkjedet liste med elementer av datatypen Kort, og under følger metoden settInnKort, som skal legge til et nytt element i listen. Problemet er at jeg får NullPointerException når metoden kjøres... public void settInnKort ( Kort k ) { if ( første == null ) første = k; else { Kort løper = første; while ( løper.neste != null ) løper = løper.neste; løper.neste = k; } } Noen hjelpe meg med hva jeg skal endre? Endret 12. februar 2008 av harald_
Patton Skrevet 12. februar 2008 Skrevet 12. februar 2008 Sjekk stacktrace og peik ut linja som kaster NullPointerException
pgdx Skrevet 12. februar 2008 Skrevet 12. februar 2008 Husk å alltid bruke brackets, selv om det bare er én linje i blokken, og alltid start brackets på samme linje som blokken starter. Kan du ikke gjøre det rekursivt? public void settInnKort ( Kort k ) { if ( første == null ) { første = k; } else { løper.settInnKort(k); } }
harald_ Skrevet 12. februar 2008 Forfatter Skrevet 12. februar 2008 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at oblig1.Kortsalg.selgKort(Kortsalg.java:100) at oblig1.Kortsalg$Lytter.actionPerformed(Kortsalg.java:177) På linje 100 i Kortsalg klassen ligger: kortsystem.settInnKort( k ); Kan feilen ligge i actionListener klassen?
harald_ Skrevet 12. februar 2008 Forfatter Skrevet 12. februar 2008 private class Lytter implements ActionListener { public void actionPerformed( ActionEvent e ) { if ( e.getSource() == klipp ) selgKort( 1 ); else if ( e.getSource() == dag ) selgKort( 2 ); else if ( e.getSource() == år ) selgKort( 3 ); else if ( e.getSource() == infoknapp ) salgsinformasjon(); else if ( e.getSource() == fjern ) fjernUgyldigeKort(); else if ( e.getSource() == ladeknapp ) ladOppKort(); } } public void selgKort( int type ) { // klippekort if ( type == 1 ) { try { int antKlipp = Integer.parseInt( antallKlippFelt.getText() ); Kort k = new Klippekort( antKlipp ); kortsystem.settInnKort( k ); // ################### DETTE ER LINJE 100 int pris = antKlipp * Klippekort.PRIS_PER_KLIPP; String åbet = pris + ".-"; betalingsFelt.setText( åbet ); } catch ( NumberFormatException nfe ) { JOptionPane.showMessageDialog(null, "Error, skriv et tall i feltet for antall klipp"); } } // dagskort else if ( type == 2 ) { Kort k = new Dagskort(); kortsystem.settInnKort( k ); String åbet = Dagskort.DAGSPRIS + ".-"; betalingsFelt.setText( åbet ); } // årskort else { try { String navn = navneFelt.getText(); Kort k = new Årskort( navn ); kortsystem.settInnKort( k ); String åbet = Årskort.ÅRSPRIS + ".-"; betalingsFelt.setText( åbet ); } catch ( NumberFormatException nfe ) { JOptionPane.showMessageDialog(null, "Error..." ); } } }
Patton Skrevet 12. februar 2008 Skrevet 12. februar 2008 kortsystem er null, dvs du har ikke initialisert den. Derfor kaster kortsystem.settInnKort( k ) NullPointerException, siden du kaller opp en metode paa ett "null-objekt".
harald_ Skrevet 12. februar 2008 Forfatter Skrevet 12. februar 2008 Ahh, stemmer Tusen takk for rask hjelp folkens!
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå