/* Tehtävä 3: Juhana Laurinharju Virheidenhallinta 7p Komentoriviparametrittomuus 3p - varautuu virheeseen 1p - antaa selkeän virheilmoituksen 2p Tiedostoa ei ole olemassa 4p - varautuu virheeseen 1p - antaa selkeän virheilmoituksen 2p - varautuu myös tilanteeseen, jossa tiedostoa ei pysty lukemaan 1p Sanojen lukeminen 5p - määrittelee HashMapin oikein 1p - kutsuu HashMapin konstruktoria oikein 1p - tarkistaa aina, että Scannerilla on vielä rivejä jäljellä ennen seuraavan rivin lukemista 2p - lisää sanaparit HashMappiin 1p - tiedostoa josta luetaan ei suljeta: -1p Käännöskysely 4p - tulostaa käännöksen kun sellainen löytyy 1p - ilmoittaa kun käännöstä ei löydy 1p - lopettaa ohjelman suorituksen kun käyttäjä antaa tyhjän merkkijonon 2p */ import java.io.File; import java.util.Scanner; import java.util.HashMap; import java.io.FileNotFoundException; public class Sanakirja { private static HashMap lueSanakirja(String tiedostonnimi) throws FileNotFoundException { Scanner tiedostonlukija = new Scanner(new File(tiedostonnimi)); HashMap sanakirja = new HashMap(); while (tiedostonlukija.hasNextLine()) { String sana = tiedostonlukija.nextLine(); if (tiedostonlukija.hasNextLine()) { String käännös = tiedostonlukija.nextLine(); sanakirja.put(sana, käännös); } } return sanakirja; } private static void käännösSilmukka(HashMap sanakirja) { Scanner lukija = new Scanner(System.in); System.out.println("Anna sana jolle haluat käännökset: (tyhjä loppettaa)"); String sana = lukija.nextLine(); while (sana.length() > 0) { if (sanakirja.containsKey(sana)) System.out.println(sanakirja.get(sana)); else System.out.println("Valitettavasti en tunne antamaasi sanaa."); System.out.println("Anna sana jolle haluat käännökset: (tyhjä loppettaa)"); sana = lukija.nextLine(); } } private static void printtaaOhje() { System.out.println("käyttö: java Sanakirja sanakirja.txt"); System.out.println("missä sanakirja.txt sisältää parittomilla riveillä alkukielisiä sanoja"); System.out.println("ja parillisilla edellisen rivin käännöksen"); } public static void main (String [] args) { if (args.length == 0) { System.out.println("Et antanut ohjelmalle tiedostonnimeä josta käännökset löytyvät."); printtaaOhje(); return; } HashMap sanakirja; System.out.println("Luetaan sanakirja."); try { sanakirja = lueSanakirja(args[0]); } catch (FileNotFoundException e) { System.out.println("Antamaasi tiedostoa ei ole olemassa tai sitä ei onnistuttu lukemaan"); System.out.println(e); return; } käännösSilmukka(sanakirja); } }