/* Selle faili sisendiks on sona ja fail. * programm otsib sellest failist sonu, mis erinevad * etteantust ainult esimesele ta"isa"a"likule eelnevate kaasha"a"likute * poolest ning kirjutab need koik ekraanile */ import java.io.*; import java.util.StringTokenizer; public class Otsisona{ public static void main(String argumendid[]) throws IOException{ StringBuffer vastus=new StringBuffer(); // kui ka"surealt pole faili ette antud, siis antakse lyhike abiteade try{ if(argumendid[0].length()==0); }catch(ArrayIndexOutOfBoundsException noarray){ abi(); System.exit(0); } BufferedReader sisse=new BufferedReader( new InputStreamReader(System.in)); try{ BufferedReader failsisse=new BufferedReader( new FileReader(argumendid[0])); String rida=failsisse.readLine(); String sona=""; // nyydseks on avatud fail jaoodatakse sona sisestamist // ainult enteri vajutusega ei lepita while(sona.length()==0){ System.out.print("Palun sisesta säna, mille vastet hakkad otsima. "); sona=sisse.readLine(); System.out.println(); } // j„rgi 2 algust // see meetod eraldab ette antud argumendist osa, mis algab // esimese argumendis leitud ta"isha"a"likuga String saadud=sonaosa(sona); // fail loetakse kuni lopuni while(rida!=null){ // eraldatakse sisse loetust onad. // oletatakse, et kahe sona vahel voib olla ka ainult . , jne StringTokenizer st= new StringTokenizer(rida, " .,:;?!/",false); while(st.hasMoreTokens()){ String jargmine=st.nextToken(); // failist eraldatud sona to"o"deldakse saraselt sisestatud sonaga // ja vorreldakse neid oma vahel String teinesaadud=sonaosa(jargmine); // see ja"rel lisatakse need vastuste stringi if (saadud.equals(teinesaadud)) vastus.append(jargmine + " "); } //while(st.) kinnii rida=failsisse.readLine(); } // vastuse valjastamine // kontrollitakse, kas yldse leiti midagi int strlength=vastus.length(); if (strlength>0) vastus.delete(strlength - 1, strlength); String allwords=new String(vastus); StringTokenizer st2=new StringTokenizer(allwords, " ", false); if (st2.countTokens() ==0) { System.out.println("Sänaga " + sona +" sarnaseid sänu ei leidnud."); System.exit(0); } else System.out.println("Leidsin " + st2.countTokens() + " sarnast säna. "+ "\n" + " Need on j„rgmised:"); int linelength=0; while(st2.hasMoreTokens()){ String getstri=st2.nextToken(); // ekranile kirjutatakse leitud sonad. // kui juba ekranile kirjutatud sonade kogupikkus yletab 60 // vahetatakse rida System.out.print(getstri + " "); linelength=linelength + getstri.length(); if (linelength>60){ linelength=0; System.out.println(); } // if kinni } // while(st2.has... }catch (IOException failiviga) { if (argumendid[0].length()==-1) abi(); else System.out.println("Viga failiga" + "\n" + failiviga.getMessage()); } } // main method close static String sonaosa(String sona){ StringBuffer varusona=new StringBuffer(); String tahed[]={"", "„Ž”™šäå", "öÕÖüÜõ"}; // liidetakse esimeseks suvaline kaash„„lik ja tyhik sänaeraldajaks varusona.append("k" +sona + " "); sona=new String(varusona); StringTokenizer st1=new StringTokenizer(sona, "aAeEiIoOuU" + tahed[1]); // String firstkatte=""; String firstkatte=st1.nextToken(); String katte=sona.substring(firstkatte.length(), sona.length()); // t„ish„„likust alates on sisestatud säna osa k„es return katte; } // sonaosa kinni static void abi(){ // v„ljastab ekraanile abiteate System.out.println("See programm otsib ette andud failist sänu, mis " + "\n" + "erinevad ette andud sänast " + "\n" + " ainult esimesele t„ish„„likule eelnevate t„ish„„likute poolest" + "\n" + "Faili nimi tuleb sisestada argumendina" + "\n" + "JAVA Tegu "); } // end abi } // programmi ots