Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Kotuksen sanalistan lukeminen

Oskuz [05.04.2014 17:09:39]

#

Eli ongelma on se, että seuraavassa koodissa ei mennä silmukkaan kun yritetään lukea kotus_sanat.txt tiedostoa. Muilla teksti-tiedostoila tuo toimii kuin unelma.

package tiedoston.luku;
import java.util.*;
import java.io.*;

public class TiedostonLuku {

   public static void main(String[] args) throws Exception {
        Scanner tiedosto = new Scanner(new File("kotus_sanat.txt"));//muilla tiedostoilla toimii.
        while (tiedosto.hasNextLine()) {        //Whileen ei mennä jostain syystä?

			String rivi = tiedosto.nextLine();
            System.out.println(rivi);
            System.out.println("kukkuu!");
        }
    }
    }

Grez [05.04.2014 17:19:50]

#

Olisiko ko. tiedossa sellainen rivinvaihto jota tuo Scanner -luokka ei ymmärrä rivinvaihdoksi?

Tosin silti luulisi tulevan yksi rivi tuollakin ...

Antti Laaksonen [05.04.2014 18:00:47]

#

Auttaisiko kertoa tiedoston merkistökoodaus?

Scanner tiedosto = new Scanner(new File("kotus_sanat.txt"), "latin1");

Triton [06.04.2014 11:10:52]

#

Testasin itsekin lukea Scannerilla tuota kotuksen sanalistaa ja se kyllä luki jokaisen rivin ihan nätisti, ilman merkistön antamistakin. Itse jäin ihmettelemään, että miksi sinulla on nuo sanat txt-tiedostossa, kun se tiedoston on alun perin xml-muotoinen. Voisit koodata jonkun hyvin simppelin sax-parserin sanojen käsittelyyn.

Oma koodini näytti tältä:

import java.util.Scanner;
import java.io.File;

public class KotusTesti {

  public static void main( String[] args ) {

    try {

      try (Scanner scanner = new Scanner( new File( "kotus.xml" ) )) {
        while ( scanner.hasNextLine() ) {
          System.out.println( scanner.nextLine() );
        }
      }


    }
    catch ( Exception e ) {

      System.out.println( e.getMessage() );

    }



  }

}

Oskuz [06.04.2014 17:41:43]

#

Antin ehdotuksella alkoi toimimaan kiitos!
Tiedosto on teksti koska latasin sen sellaisena. :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta