Avatar billede gorlist Nybegynder
29. november 2001 - 12:08 Der er 11 kommentarer og
1 løsning

Exception med ArrayList

Jeg har oprettet en ArrayList (ArrayList a = new ArrayList();) og ønsker at indsætte et object af typen Kunde:

Kunde k = new Kunde(1,\"John Dum\",86111111);

Men når jeg siger a.add(k) får jeg en debugfejl som siger: Uncaught exception(java.lang.NullPointerException) fordi a = null.

Hvad gør jeg med det? Og hvorfor kan man ikke indsætte i et tomt Array?
Avatar billede disky Nybegynder
29. november 2001 - 12:13 #1
List a = new ArrayList();
Kunde k = new Kunde(1,\"gorlist\",1234);
a.add(k);

Skulle meget gerne virke
Avatar billede disky Nybegynder
29. november 2001 - 12:14 #2
Den exception betyder ikke at \'a\' er tom men at den ikke er instantieret
Avatar billede lyhr007 Nybegynder
29. november 2001 - 12:15 #3
jeg tror det er fordi din ArrayList er ude af Scope.

Eller fordi a bliver assignet til null på et eller andet tidspunkt.

Hvis du bruger Forte (eller lign IDE), så prøv at step trace, og se hvilke værdier a har.
Avatar billede gorlist Nybegynder
29. november 2001 - 12:25 #4
Følgende metoder ligger i class Kartotek;
---------------------------------------
public Kartotek() {
    super();
    List a = new ArrayList();   
}
---------------------------------------
public static void main(java.lang.String[] args) {
    Kartotek ka = new Kartotek();
    List a = ka.getarraylist();
    Kunde k = new Kunde(1,\"John Dum\",86111111);
    ka.addkunde(k);
}
-------------------------------------
    public ArrayList getarraylist() {
        return a;
        }
---------------------------------------

    public void addkunde(Kunde k){
        a.add(k);
        }
----------------------------------------
Kan nogen se hvor jeg evt. skal initialisere ArrayList?
Avatar billede disky Nybegynder
29. november 2001 - 12:27 #5
Problemmet er at din arraylist kun lever i din konstruktur.

Flyt \'List a;\' uden for metoderne, så det er en variable på klasse niveau
Avatar billede gorlist Nybegynder
29. november 2001 - 12:28 #6
Ah - ok! Kan godt se at linjen \'List a = ka.getarraylist();\' er overflødig, men det giver stadig samme problem.
Avatar billede disky Nybegynder
29. november 2001 - 12:28 #7
Class Kartotek
{

List a;

public Kartotek()
{
    super();
    a = new ArrayList();   
}

public static void main(java.lang.String[] args)
{
    Kartotek ka = new Kartotek();
    List a = ka.getarraylist();
    Kunde k = new Kunde(1,\"John Dum\",86111111);
    ka.addkunde(k);
}


public ArrayList getarraylist()
{
        return a;
}


public void addkunde(Kunde k)
{
        a.add(k);
}

}
Avatar billede disky Nybegynder
29. november 2001 - 12:30 #8
se forskelle med at List er defineret i klasse scope istedet for i metode scope
Avatar billede gorlist Nybegynder
29. november 2001 - 12:43 #9
Tak for det - det kører jo.
Men der opstod en andet problem: Jeg ønsker at sende den pågældende List med til en class KundeGUI (ArrayList a) som jeg samtidig opretter:

KundeGUI g = new KundeGUI(ka.getarraylist());

Nu siger den:
The constructor invoked to create pkundeGUI.KundeGUI with arguments (java.util.List) is not defined

Hvad betyder det? (Håber du vil tage \'extra credits\' - hehe)
Avatar billede disky Nybegynder
29. november 2001 - 12:45 #10
det betyder at du ikke har en Constructor der tager en java.util.List som argument i din KundeGUI klasse
Avatar billede gorlist Nybegynder
29. november 2001 - 12:48 #11
Fantastisk! Takker!
Avatar billede disky Nybegynder
29. november 2001 - 12:50 #12
selv tak
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