Toon posts:

[JAVA] NullPointerException, maar waarom...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Krijg dus bij het runnen een error: nullpointerexception.
Kheb ff geen idee waar het aan ligt, misschien weten jullie het (denk t wel :)

het gaat om dit stukkie code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.*;

public class binaireZoekboom
{
    static final String invoer="woorden.txt";
    
    public static void main(String[] args)
    {  
        BzB boom = new BzB();
        String woordje;
        
        try
        {
            FileReader reader = new FileReader(invoer);
            BufferedReader in = new BufferedReader(reader);
            
            while (!(in.readLine().equals(null)))
            {
                woordje = in.readLine();
                boom.insert(woordje);
            }
            
            reader.close();


Waar gaat het dus fout :? Ik ben een leek, dus mij kan je alles vertellen ;)

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
in.readLine().equals(null) ?
op welke regel krijg je het ?

Verwijderd

Je roept 2 maal in.readLine aan .. je slaat dus elke keer een regel over.. lijkt me niet goed?!

Verwijderd

Topicstarter
Idd op die regel ja, dus wat moet ik daar aan veranderen?
Enlighten me ;)
Bvd. :)

Verwijderd

probeer dit eens:
while ((woordje = in.readLine()) != null)

Verwijderd

Topicstarter
Dankuwel!

Probleem opgelost, mn zoekboom werkt :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

vb

code:
1
2
3
4
5
6
StringBuffer sb = new StringBuffer();
String blaat = in.readLine();
while(blaat!=null){
      sb.append(blaat+"\n");
      blaat = in.readLine();
}


En dit is wel erg basic.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 24-08 23:08
Alarmnummer schreef op 19 januari 2003 @ 17:46:
code:
1
2
3
4
5
6
StringBuffer sb = new StringBuffer();
String blaat = in.readLine();
while(blaat!=null){
      sb.append(blaat+"\n");
      blaat = in.readLine();
}
Duidelijk voorbeeld van hoe het niet moet. Gebruik liever RIP's suggestie, waarbij je niet "blaat = in.readLine()" dubbel hoeft te vermelden.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21:00

Robtimus

me Robtimus no like you

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.io.*;

public class binaireZoekboom
{
    static final String invoer="woorden.txt";

    public static void main(String[] args)
    {  
        BzB boom = new BzB();
        String woordje;
        
        try
        {
            FileReader reader = new FileReader(invoer);
            BufferedReader in = new BufferedReader(reader);

            woordje = in.readLine();
            while (line != null)
            {
                boom.insert(woordje);
                woordje = in.readLine();
            }
            reader.close();
        }
    }
}

zo kan het dus ook: lees een woordje en insert dat. En ik weet uit ervaring: dit werkt goed.

Stukje advies: probeer nooit een bject.equals(null); als dat object null is, probeer je van een null object een method aan te roepen, en dat gaat fout. Daarom dus object == null

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Mwah, in een assignment in een expressie verdient ook geen schoonheidsprijs.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Soultaker schreef op 19 January 2003 @ 17:48:
[...]


Duidelijk voorbeeld van hoe het niet moet. Gebruik liever RIP's suggestie, waarbij je niet "blaat = in.readLine()" dubbel hoeft te vermelden.
Zo duidelijk is dat anders niet imo. Of je kiest voor een toekenning/vergelijking op 1 regel die tenkoste gaat van de leesbaarheid *vind het rotdingen om te lezen* of je kiest voor mijn aanpak. Aangezien de aanroep niet bijzonder ingewikkeld is, prefereer ik toch echt deze aanpak.

Verwijderd

Alternatief dat ik duidelijker vind.
code:
1
2
3
4
5
while(true) {
  String line = in.readLine();
  if(line==null) break;
  boom.insert(line);
}

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Nogal overbodige break, ik zou sowieso voor een van de vorige opties kiezen.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-08 19:22
code:
1
2
3
4
  String line = in.readLine();
  while (line != null) {
    boom.insert(in.readLine());
  }


Zo zou ik het aanpakken.

[ Voor 14% gewijzigd door Sybr_E-N op 19-01-2003 21:46 . Reden: hoo, ff type vegeten. ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16:18

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sybr_E-N schreef op 19 January 2003 @ 20:52:
code:
1
2
3
  while (line != null) {
    boom.insert(in.readLine());
  }


Zo zou ik het aanpakken.


Dat werkt ook zo lekker. Wat is line? En als in.readLine () nu null is stuur je 'm mooi door naar de boom. Niet goed dus

oh trouwens, gebruik [code=java] ipv [code] ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Sybr_E-N schreef op 19 January 2003 @ 20:52:
code:
1
2
3
  while (line != null) {
    boom.insert(in.readLine());
  }


Zo zou ik het aanpakken.
Kijk hier nou eens goed na.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

.oisyn schreef op 19 januari 2003 @ 21:00:
Dat werkt ook zo lekker. Wat is line? En als in.readLine () nu null is stuur je 'm mooi door naar de boom. Niet goed dus
En hij blijft in die lus hangen omdat line nooit een andere waarde krijgt (of je krijgt een exception van readline).

Ik weet dan nog wel een betere.

code:
1
2
3
4
5
6
for(;true;){
    String line = readLine();
    if (line == null) goto end;
}

end:

[ Voor 16% gewijzigd door Alarmnummer op 19-01-2003 21:06 ]


Verwijderd

ipv NullPointerException kan je beter een gewone Exception doen, is de kans nog kleiner dat hij eruit knalt en je hoeft nog minder te typen ;)


[edit]

er zit iemand zijn code aan te passen ;)

Er stond een NullPointerException in :)

[ Voor 26% gewijzigd door Verwijderd op 19-01-2003 21:37 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 19 januari 2003 @ 21:07:
ipv NullPointerException kan je beter een gewone Exception doen, is de kans nog kleiner dat hij eruit knalt en je hoeft nog minder te typen ;)

Wat is er te 'doen' dan? Je krijgt gewoon een generatie van een NullPointerException als je een variabele die null bevat probeert te dereferencen

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Glimi schreef op 19 januari 2003 @ 21:33:

[...]

Wat is er te 'doen' dan? Je krijgt gewoon een generatie van een NullPointerException als je een variabele die null bevat probeert te dereferencen
Ik was weer eens mezelf en had het voorbeeldje even aangepast. Sinterklaar gaf even advies om mijn mooi stukje code. :)
Pagina: 1