Avatar billede doktoren Nybegynder
17. december 2003 - 14:15 Der er 7 kommentarer og
1 løsning

Problem med NullPointerException

I et tekst-baseret spil, hvor data indlæses fra en fil, har jeg problemer med NullPointerException. I den følgende kode er de allerede indlæste lokationer og characters lagt i to HashMaps. Nu indlæses de forskellige characters startlokationer så, og hver character lægges ind i et HashMap i startlokationen, der indeholder de characters, der er på den lokation. Samtidig er det så meningen, at alle characters skal ligge i en ArrayList, således at alle characters kan flyttes i hver spil-tur. Men når jeg prøver at "add" en character til ArrayListen "characters" får jeg en NullPointerException... Kan nogen hjælpe???

            // Initialize instance variables.
            String locationKey;
            String characterKey;
            City location;
            Character character;
            // Initialize new tokenizer. Splits up the line from the file.
            StringTokenizer tokenizer = new StringTokenizer(currentLine, ";");
            locationKey = tokenizer.nextToken();
            characterKey = tokenizer.nextToken();
            // Finds the City from the location HashMap.
            location = (City)locations.get(locationKey);
            // Finds the character from the NPC HashMap.
            character = (Character)npcs.get(characterKey);
            // Adds the character to the city character HashMap.
            location.addCharacter(characterKey,character);
            // Adds the character to the ArrayList holding all characters in the game.
            characters.add(character);
Avatar billede repsak Nybegynder
17. december 2003 - 14:21 #1
Det jo en reference som ikke er initialiseret ;-)
er du sikker på at
String locationKey;
String characterKey;
City location;
Character character;
er initialiseret?
Avatar billede doktoren Nybegynder
17. december 2003 - 14:28 #2
Øhh jeg er forholdsvis ny i det her - kan du ikke uddybe det lidt? Hvad mener du helt præcist? Kodestumpen er en del af den metode, der indlæser characters i spillet. HashMaps og ArrayList er initialiseret i selve klassen. Character bliver også hentet fint nok i NPC HashMap'et (har testet)...
Avatar billede di8leva Nybegynder
17. december 2003 - 14:29 #3
Hvis den kod er din ende kod så er fejlen at
"characters" ikke har blevet skabt

characters = new ArrayList(); måske =)
Avatar billede di8leva Nybegynder
17. december 2003 - 14:30 #4
ArrayList list = new ArrayList();
list.add(character);
virker fint...

ArrayList list;
list.add(character);
gir NullPointerException
Avatar billede repsak Nybegynder
17. december 2003 - 14:31 #5
En klasisk fejlfindningsmodel:
Smid en System.out.println(x) ind efter hver linje (hvor x er et tal som øges:
String s;
System.out.println(1);
String s1;
System.out.println(2);
osv
Så kan du helt præcist finde linjen med fejl - hvis den ikke udskrives ellers :-)
Avatar billede di8leva Nybegynder
17. december 2003 - 14:33 #6
Virker det eller var det av misstag du godkænde? =)
Avatar billede doktoren Nybegynder
17. december 2003 - 14:33 #7
Ok - har fundet fejlen - havde godt nok initialiseret ArrayList'en, men ikke lavet en "new ArrayList"... DOH!!! Tak for hjælpen!
Avatar billede repsak Nybegynder
17. december 2003 - 14:35 #8
lige for en god ordens skyld:
Arraylist a; //Her ERKLÆRER
a = new ArrayList(); //og først her INITIALISERER vi

det letter det lidt hvis du bruger de rigtigt begreber :-)
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