Avatar billede pfp Nybegynder
22. september 2003 - 22:17 Der er 18 kommentarer og
1 løsning

nullPointer exception?

Hej,

Jeg forsøger at udskrive indholdet af en ArrayList. Jeg har selv forsøgt med dette:

public void udskrivAktivitetsliste()
    {
        if(transaktioner.isEmpty())
        {
        System.out.println("Der er endnu ikke foretaget nogen transaktioner");
        }
       
        for(int i = 0; i < transaktioner.size(); i++)
        {
        System.out.println(transaktioner.get(i));
        System.out.println("");
        }     
    }

Det compiles fint, men giver en nullPointer exception ved afvikling. Jeg ved med garanti at listen ikke er tom.

Hvad kan der være galt?

/pfp
Avatar billede arne_v Ekspert
22. september 2003 - 22:22 #1
Det må skyldes at transaktioner er null !

Har du en transaktioner = new ArrayList() ?
Avatar billede riversen Nybegynder
22. september 2003 - 22:22 #2
ja, det lyder til du har en initialiseringsfejl et sted
Avatar billede pfp Nybegynder
22. september 2003 - 22:26 #3
Ja jeg har transaktioner = new ArrayList();

Og jeg ved den ikke er tom, for hvis jeg inspector objektet kan jeg se at der er noget på id 0 og 1...
Avatar billede pfp Nybegynder
22. september 2003 - 22:29 #4
Desuden tjekker jeg den jo med isEmpty og der går den videre og markerer længere nede..
Avatar billede riversen Nybegynder
22. september 2003 - 22:30 #5
men er du sikker på referencen du henter peger på et objekt ?
Avatar billede riversen Nybegynder
22. september 2003 - 22:31 #6
det er de eneste 2 fejlmuligheder, jeg kan komme i tanke om...ellers må du lægge lidt kode
Avatar billede riversen Nybegynder
22. september 2003 - 22:31 #7
samt hele fejlbeskeden
Avatar billede pfp Nybegynder
22. september 2003 - 22:34 #8
Du kan gerne få koden:

Abonnement klassen:
import java.util.*;

/**
* Abonnement
*
* @author Peter F. Poulsen
* @version 22-09-2003
*/
public class Abonnement {

    private String telefonnummer;
    private ArrayList transaktioner;
   
    public Abonnement(String tlf) {
        telefonnummer = tlf;
        transaktioner = new ArrayList();
        transaktioner.add( new Indbetaling(20000) );
    }
   
    public void tilføjTransaktion(Transaktion t) {
        transaktioner.add(t);
    }

    public int saldo() {
        int s = 0;
        Iterator i = transaktioner.iterator();
        while ( i.hasNext() ) {
            Transaktion t = (Transaktion) i.next();
            s = s + t.beløb();
        }
        return s;
    }
   
    /**
    * Udskriver en liste over abonnentens aktiviteter.
    */
    public void udskrivAktivitetsliste()
    {
        if(transaktioner.isEmpty())
        {
        System.out.println("Der er endnu ikke foretaget nogen transaktioner");
        }
       
        for(int i = 0; i < transaktioner.size(); i++)
        {
        System.out.println(transaktioner.get(i));
        System.out.println("");
        }
       
     
    }
   
    /**
    * toString funktion
    */
    public String toString() {
        return telefonnummer;
    }
}

------------------------------------------------------------
Fejlbesked:
NullPointerException:
null(in java.io.PrintStream)
Avatar billede arne_v Ekspert
22. september 2003 - 22:35 #9
Nu kører den jo videre efter isEmpty uanset hvad.

Hvad linie får du fejlen i ?
Avatar billede pfp Nybegynder
22. september 2003 - 22:37 #10
Nå ja ok. Men den burde vel give mig besked der hvis den var tom?

Jeg får fejlen i:
System.out.println(transaktioner.get(i));
Avatar billede arne_v Ekspert
22. september 2003 - 22:41 #11
Lidt mystisk.

Koden ser ud til at køre fint hos mig.

Hvordan kører du programmet ?

Du er sikker på at fejlen sker der ?
Avatar billede pfp Nybegynder
22. september 2003 - 22:43 #12
Jeg går ud fra at det er der fejlen sker, da det er den linie der bliver markeret når jeg prøver at afvikle det.

Jeg skriver, compiler og afvikler fra BlueJ.
Avatar billede arne_v Ekspert
22. september 2003 - 23:04 #13
Kunne du prøve at køre det direkte ved prompten ?
Avatar billede pfp Nybegynder
22. september 2003 - 23:06 #14
Hmmm, det ved jeg ikke hvordan man gør? Er først lige begyndt på Java, derfor arbejder jeg i BlueJ. Ville det hjælpe noget hvis jeg zippede hele min source og sendte til dig?
Avatar billede arne_v Ekspert
22. september 2003 - 23:10 #15
Så kunne jeg formentlig se problemet.
Avatar billede arne_v Ekspert
22. september 2003 - 23:10 #16
arne_v@mail.danbbs.dk
Avatar billede arne_v Ekspert
22. september 2003 - 23:38 #17
Der er fejl i din Indbetaling.java !

Ret:

    /**
    * toString funktion
    */
    public String toString() {
        return null;
    }

til:

    /**
    * toString funktion
    */
    public String toString() {
        return "Indbetaling=" + indbetalingsBeløb;
    }

så virker det !
Avatar billede pfp Nybegynder
23. september 2003 - 15:35 #18
Hvis jeg så sender SMS med void tilfojTransaktion og derefter kalder udskrivAktivitetsListe() så udskrives der teksten "null null", men hvis jeg tilfojTransaktion på Samtale så laver den null pointer exception
Avatar billede pfp Nybegynder
23. september 2003 - 15:42 #19
Nu virker det dælme! Det er mig der har kaget fuldstændig godt og grundig i de toString funktioner. Der skulle bare en ordentlig toString på Samtale klassen også så spiller det..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester