|
|
- # WordCount
-
- Kirjoita ohjelma `WordCount`, joka kysyy käyttäjältä tiedoston nimeä ja tulostaa kyseisessä tiedostossa olevien rivien, sanojen ja merkkien määrän.
-
- Luettavan tiedoston on oltava Java-projektin juuressa. Esimerkiksi suorituksesta:
-
- ```
- Anna tiedoston nimi: loremipsum.txt
-
- Tiedostossa on:
- 2 riviä
- 8 sanaa
- 55 merkkiä
- ```
-
- Esimerkissä on käytetty tiedostoa `loremipsum.txt`:
-
- ```
- Lorem ipsum dolor sit amet,
- consectetur adipiscing elit.
- ```
-
- Riveksi lasketaan myös tyhjät rivit ja merkeiksi myös välilyönnit. Sanojen laskemiseksi voit käyttää String-luokan `split`-metodia, jolla pilkot kunkin rivin välilyöntien kohdalta. Huomaa kuitenkin, että tyhjällä rivillä ei saa laskea yhtään sanaa, vaikka `split`-metodi palauttaakin yhden pituisen taulukon.
-
- Voit hyödyntää omaa ohjelmaa testatessasi myös [tekstitiedosto.txt](https://gist.githubusercontent.com/swd1tn002/92d5a1082c978e2d0e90a082be1fca0b/raw/c5199dda06f2e34590301b1b711d4b157cc02c76/tekstitiedosto.txt)-tiedostoa.
-
- ```
- Anna tiedoston nimi: loremipsum.txt
-
- Tiedostossa on:
- 2 riviä
- 8 sanaa
- 55 merkkiä
- ```
-
- **WordCount.java**
-
- ```
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.BufferedReader;
- import java.util.Arrays;
- import java.util.Scanner;
-
- public class WordCount {
-
- public static void main(String[] args) {
-
- Scanner syote = new Scanner(System.in);
- System.out.print("Anna tiedoston nimi: ");
- String tiedostoNimi = syote.next();
-
- try {
- File tiedosto = new File(System.getProperty("user.dir"), tiedostoNimi);
-
- int i, rivit = 0, sanat = 0, merkit = 0;
- FileReader lukija = new FileReader(tiedosto);
- BufferedReader riviVirta = new BufferedReader(lukija);
- String nykyRivi = riviVirta.readLine();
-
- while (nykyRivi != null) {
-
- // Laske rivit
- rivit++;
-
- if (!nykyRivi.isEmpty()) {
-
- // Laske sanat
- i = 0;
- while (i < Arrays.asList(nykyRivi.split(" ")).size()) {
- sanat++;
- i++;
- }
-
- // Laske merkit
- i = 0;
- while (i < Arrays.asList(nykyRivi.split("")).size()) {
- merkit++;
- i++;
- }
- }
- // Siirry seuraavaan riviin
- nykyRivi = riviVirta.readLine();
- }
- lukija.close();
-
- System.out.printf("Tiedostossa on:\n%d riviä\n%d sanaa\n%d merkkiä\n", rivit, sanat, merkit);
-
- } catch (IOException e) {
- System.err.printf("Tiedostoa %s ei löydy tai sen lukemisessa kävi virhe", tiedostoNimi);
- }
-
- }
-
- }
- ```
|