harald_ Skrevet 12. februar 2008 Del 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_ Lenke til kommentar
Patton Skrevet 12. februar 2008 Del Skrevet 12. februar 2008 Sjekk stacktrace og peik ut linja som kaster NullPointerException Lenke til kommentar
pgdx Skrevet 12. februar 2008 Del 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); } } Lenke til kommentar
harald_ Skrevet 12. februar 2008 Forfatter Del 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? Lenke til kommentar
pgdx Skrevet 12. februar 2008 Del Skrevet 12. februar 2008 Show us the code! Ihvertfall den metoden. Lenke til kommentar
harald_ Skrevet 12. februar 2008 Forfatter Del 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..." ); } } } Lenke til kommentar
Patton Skrevet 12. februar 2008 Del 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". Lenke til kommentar
harald_ Skrevet 12. februar 2008 Forfatter Del Skrevet 12. februar 2008 Ahh, stemmer Tusen takk for rask hjelp folkens! Lenke til kommentar
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å