Toon posts:

[JAVA]NullPointerException

Pagina: 1
Acties:
  • 53 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik krijg een nullpointerexception bij deze method !!! Er zit in de klasse waar deze functie staat een private variabele (vector). Ik heb echt van alles geprobeerd om het oplossen maar het wil niet lukken en het is nu toch vrij frustrerend :)
Mijn excuses nog voor mijn vorige post dat was zeg maar alle code die ik had.
Ik hoop wat ik nu doe wel legaal is, kan iig niks in de stickies hierover lezen. nou iig bij voorbaat dank !!!

code:
1
private Vector kamers;


en hier wordt ie geinitialiseerd.
code:
1
2
3
4
5
6
public Hotel(String naam,String plaats)
  {
    this.naam=naam;
    this.plaats=plaats;
    Vector kamers = new Vector();
  }



code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  public void voegKamerToe(int knr,int cap)
  {
    boolean gelijk=false;
    for(int i=0;i<kamers.size();i++)
    {
      Kamer temp;
      temp=(Kamer)kamers.elementAt(i);
      if(temp.getKamernummer()==knr)
      {
        gelijk=true;
        break;
      }
    }
    if(gelijk==false)
    {
      Kamer kamer=new Kamer(knr,cap);
      kamers.addElement(kamer);
    }
  }

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Kijk nog eens goed naar wat er in de constructor staat en of je niet misschien een globale variable overschrijft met een lokale.

Als je consequent this. zou gebruiken had je die fout niet gemaakt, trouwens. ;)

[ Voor 25% gewijzigd door Gert op 21-11-2004 20:18 ]


Verwijderd

Je initialiseerd een vector binnen de scope van die methode... niet de globale scope, dus blijft de vector in de globale scope null

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Java:
1
private List kamers = new ArrayList();


Java:
1
2
3
4
5
public Hotel(String naam,String plaats)
  {
    this.naam=naam;
    this.plaats=plaats;
  }


Java:
1
2
3
4
5
6
7
8
9
10
  public void voegKamerToe(int knr,int cap)
  {
    for(int i=0;i<kamers.size();i++)
    {
      Kamer k = (Kamer)kamers.get(i);
      if(k.getKamernummer()==knr)
        return; // can't add duplicate rooms
    }
    kamers.add(new Kamer(knr,cap));
  }

Even 'netjes' herschreven:
Initialisatie van de ArrayList bij de declarator ipv. in de Constructor.
Gebruik List/ArrayList ipv Vector (denk erover na om een Map/HashMap te gebruiken, met kamer nummer als Key en de kamer als Value.)
Heb overbodige boolean verwijderd.
Return meteen uit methode bij dubbele kamer.
Geen tijdelijk variabele bij het toevoegen van een kamer.

[ Voor 12% gewijzigd door Macros op 21-11-2004 20:24 ]

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Topicstarter
Harstikke bedankt !!!! Ik krijg nu geen nullpointerexceptions meer en mijn JList word netjes gevuld. Ik edit morgen nog ff mijn post als ik de wijzigingen niet begrijp. Maar ik denk dat dat wel goed zit. Ik mocht van de leraar geen list gebruik moest perse een Vector echt raar maar toch.

  • mcB
  • Registratie: Mei 2002
  • Laatst online: 15-05 09:27

mcB

De oplossing van macros is idd een veel nettere dan dat de TS al had. Toch ben ik wel benieuwd waar de nullpointerexception nou kan zitten. Zoals ik het nu lees kan ie niet in de code van de openingspost zitten.
Verwijderd schreef op zondag 21 november 2004 @ 20:16:
Je initialiseerd een vector binnen de scope van die methode... niet de globale scope, dus blijft de vector in de globale scope null
Eeehm,.. methode? Volgens mij is dit gewoon de constructor en is er niets op tegen om in de constructor een vector te initialiseren.

Strix (Skullflame)


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Java:
1
2
3
4
5
6
public Hotel(String naam,String plaats)
  {
    this.naam=naam;
    this.plaats=plaats;
    Vector kamers = new Vector(); // <<< locale variabele 'hides' globale variabele
  }

[ Voor 18% gewijzigd door Macros op 21-11-2004 23:51 ]

"Beauty is the ultimate defence against complexity." David Gelernter


  • mcB
  • Registratie: Mei 2002
  • Laatst online: 15-05 09:27

mcB

Oei,.. dom ,. ik lees de code nu nog een keer en zie het meteen. 8)7 8)7

Strix (Skullflame)


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:53

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op zondag 21 november 2004 @ 23:31:
Harstikke bedankt !!!! Ik krijg nu geen nullpointerexceptions meer en mijn JList word netjes gevuld. Ik edit morgen nog ff mijn post als ik de wijzigingen niet begrijp. Maar ik denk dat dat wel goed zit. Ik mocht van de leraar geen list gebruik moest perse een Vector echt raar maar toch.
Als je dan de volgende keer ook nog iets meer moeite stopt in de titel van je topicstart dan zijn we allemaal weer tevreden.
[Java]NullPOinterException kan echt vanalles wezen namelijk ;)

Edit: nah, scrap that. Hij gaat alsnog op slot. Zie je laatste drie topics. Als je nou ook zou beschrijven WAT je allemaal hebt geprobeerd en waar je denkt waar de fout zou kunnen zijn dan had ik hem open laten staan.

Lees anders de FAQ eens door, en met name het stukje over debuggeb :)

[ Voor 20% gewijzigd door Creepy op 22-11-2004 09:07 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.