Gå til innhold

[løst] NullpointerException problem, sammenkjedet liste


Anbefalte innlegg

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 av harald_
Lenke til kommentar
Videoannonse
Annonse

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

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

	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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...