/** * */ package luento19; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintStream; import java.util.ArrayList; import java.util.Collection; import java.util.StringTokenizer; import fi.jyu.mit.ohj2.Tiedosto; /** * * @author vesal * @version 22.3.2011 */ public class Sanat { private Collection alkiot = new ArrayList(); /** * * @param s estittävä */ public void lisaa(String s) { for (Sana sana: alkiot) if ( sana.oletko(s) ) { sana.lisaa(); return; } Sana sana = new Sana(s); sana.lisaa(); alkiot.add(sana); } /** * @param rivi käsiteltävä rivi */ public void kasitteleRivi(String rivi) { String s; StringTokenizer st = new StringTokenizer(rivi," ,();:.?!"); while ( st.hasMoreElements() ) { s = st.nextToken(); lisaa(s); } } /** * @param out tietovirta johon tulostetaan */ public void tulosta(PrintStream out) { for (Sana sana:alkiot) out.println(sana); } /** * @param tiedostonNimi tiedoston nimi josta luetaan * @return virheen joka tapahtui, null jos kaikki hyvin */ public String lueTiedostoJaLaske(String tiedostonNimi) { BufferedReader fi = Tiedosto.avaa_lukemista_varten(tiedostonNimi); if ( fi == null ) return "Ei löydy: " + tiedostonNimi; try { String rivi; while ( true ) { rivi = fi.readLine(); if ( rivi == null ) break; kasitteleRivi(rivi); } } catch (IOException e) { return "Ongelmia tiedoston lukemisessa"; } finally { try { fi.close(); } catch (IOException e) { // ei osata tehdä mitään } } return null; } /** * @param args ei käytössä */ public static void main(String[] args) { Sanat sanat = new Sanat(); sanat.lisaa("kissa"); sanat.lisaa("koira"); sanat.lisaa("kissa"); sanat.tulosta(System.out); System.out.println("========================="); sanat.kasitteleRivi("kissa, istuu kissa puussa"); sanat.tulosta(System.out); } }