Avatar billede aslan Nybegynder
13. maj 2002 - 17:11 Der er 9 kommentarer og
1 løsning

Jeg får en NoSuchElementException?

Jeg får en NoSuchElementException?

import java.io.*;
import java.util.*;


class Reader
{
    Reader()throws IOException
    {


      BufferedReader læsFil = new BufferedReader(new FileReader( "værelser.txt" ));

      String fil = læsFil.readLine();

      StringTokenizer    småStykker = new StringTokenizer(fil);


      while(fil != null)
      {


          String stykke = småStykker.nextToken();
          int nr = Integer.parseInt(stykke);

          String stykke2 = småStykker.nextToken();
          int størrelse = Integer.parseInt(stykke2);

          String status = småStykker.nextToken();


          System.out.println(nr+" "+størrelse+" "+status);

      }



    }
    public static void main(String[] aslan)throws IOException
    {
        new Reader();
    }
}
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 17:14 #1
public static void main(String[] aslan)throws IOException

kan man godt det?

burde der ikke stå

public static void main(String[])throws IOException
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 17:14 #2
bah jeg tåger...
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 17:17 #3
Din while løkke kører for evigt!

derfor prøver du at hente nextToken igen og igen og igen



import java.io.*;
import java.util.*;


class Reader
{
    Reader()throws IOException
    {


      BufferedReader læsFil = new BufferedReader(new FileReader( "værelser.txt" ));

      String fil = læsFil.readLine();

      StringTokenizer    småStykker = new StringTokenizer(fil);


      if(fil != null)
      {


          String stykke = småStykker.nextToken();
          int nr = Integer.parseInt(stykke);

          String stykke2 = småStykker.nextToken();
          int størrelse = Integer.parseInt(stykke2);

          String status = småStykker.nextToken();


          System.out.println(nr+" "+størrelse+" "+status);

      }



    }
    public static void main(String[] aslan)throws IOException
    {
        new Reader();
    }
}
Avatar billede aslan Nybegynder
13. maj 2002 - 17:22 #4
problemet er at jeg skal blive ved med at læse fra filen indtil den er tom og med if(fil != null) gør den det kun en gang!
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 17:29 #5
Du læser kun 1 linje ud fra læsFil, nemlig i linjen
String fil = læsFil.readLine();

Hvis du vil læse flere så skal de vel se ca. sådan her ud:

while ((fil = læsFil.readLine()) != null) {

// Den kode der skakl gøre noget med linjen.

}


Denne løkke vil kører så længe der er flere linjer i din fil.
Avatar billede aslan Nybegynder
13. maj 2002 - 17:38 #6
C:\Documents and Settings\aslan\Skrivebord\læs fil\Reader.java:18: incompatible types
found  : java.lang.String
required: boolean
      while((fil = læsFil.readLine()) = null)
            ^
1 error

Tool completed with exit code 1
Avatar billede aslan Nybegynder
13. maj 2002 - 17:48 #7
fik lige rettet til : while((fil = læsFil.readLine()) != null)

Men den giver stadig NoSuchElementException?
Avatar billede lyhr007 Nybegynder
13. maj 2002 - 18:08 #8
Du skal også lave din tokenizer inde i while løkken.
Avatar billede carstenknudsen Nybegynder
13. maj 2002 - 20:40 #9
Bare en lille kommentar: navnet Reader
benyttes af en abstrakt klasse i java.io
pakken så måske skulle du undgå det navn
i større kode.
Avatar billede aslan Nybegynder
13. maj 2002 - 20:49 #10
Ok carstenknudsen det skal jeg huske!
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