1   import java.io.*;
2   import fi.jyu.mit.ohj2.*;
3   import java.util.StringTokenizer;
4   
5   
6   /**
7    * Luokka sanojen esiintymismäärien laskemiseksi.
8    * @author Vesa Lappalainen
9    * @version 1.0, 21.02.2003
10   */
11  public class Sanat {
12    private Sana alkiot[] = new Sana[10];
13    private int lkm = 0;
14  
15    public void lisaa(String s) {
16      for (int i=0; i<lkm; i++) {
17        if ( alkiot[i].oletko(s) ) {
18          alkiot[i].lisaa();
19          return;
20        }
21      }
22      if ( lkm >= alkiot.length ) return;
23      alkiot[lkm] = new Sana(s);
24      alkiot[lkm].lisaa();
25      lkm++;
26    }
27  
28    public void tulosta(OutputStream os) {
29      PrintStream out = Tiedosto.getPrintStream(os);
30      for (int i=0; i<lkm; i++)
31        out.println(alkiot[i]);
32    }
33  
34  
35    public void kasitteleRivi(String rivi) {
36      String sana;
37      StringTokenizer st = new StringTokenizer(rivi," ,();.:[]{}+-");
38      while ( st.hasMoreTokens() ) {
39        sana = st.nextToken();
40        lisaa(sana);
41      }
42    }
43  
44    public void lueTiedosto(String tied) throws IOException {
45      BufferedReader fi = Tiedosto.avaa_lukemista_varten(tied);
46      if ( fi == null ) throw new FileNotFoundException("Ei löydy: " + tied);
47  
48      try {
49        String rivi;
50        while ( ( rivi = fi.readLine() ) != null  ) {
51          kasitteleRivi(rivi);
52        }
53      } finally {
54        fi.close();
55      }
56    }
57  
58  
59    public static void main(String[] args)  {
60      Sanat sanat = new Sanat();
61      sanat.lisaa("kissa");
62      sanat.lisaa("kissa");
63      sanat.lisaa("koira");
64      sanat.tulosta(System.out);
65      sanat.kasitteleRivi("kissa, istuu kissa puussa");
66      sanat.tulosta(System.out);
67    }
68  }
69