Kierros 9 - Harjoitus 4 TekstitiedostonIteroija Tavoitteet, oppimateriaali ja rivimäärä Käsiteltävät asiat: tekstitiedoston lukeminen, rajapinnat ja varattu sana implements. Iteraattorit. Opetusmoniste: Rajapinnoista Opetusmoniste: Rivejä malliratkaisussa: 184 (TekstitiedostonIteroijassa 145, TekstitiedostonLukijassa 39) Tehtävän määrittely Voit ladata valmiin Eclipse-projektin tähän tehtävään (TekstitiedostonIteroija.zip) sivun oikeasta palkista. Tässä tehtävässä harjoitellaan tekstitiedoston käsittelyä, etenkin tekstitiedoston lukemista. Kirjoita ensin luokka TekstitiedostonIteroija, jota käytät tässä tehtävässä tekstitiedostojen lukemiseen. Luokan TekstitiedostonIteroija tulee toteuttaa rajapinta Iterator. Saat käyttöösi ainoastaan luokan TekstitiedostonIteroija javadoc-dokumentin, jonka pohjalta luokka tulee toteuttaa. Kirjoita myös pääohjelmaluokka TekstitiedostonLukija, joka käyttää tekemääsi luokkaa TekstitiedostonIteroija tekstitiedostojen lukemiseen. Ohjelma saa käynnistettäessä kaksi parametria, joista ensimmäinen on luettava tiedosto, ja toinen on yhdellä kerralla luettavien rivien lukumäärä (sivutus). Jos käyttäjä haluaa lukea tiedostoa porssi.txt 10 riviä kerrallaan, hän kirjoittaa: java TekstitiedostonLukija porssi.txt 10 Pääohjelma lukee tekstitiedostoa TekstitiedostonIteroija-luokan avulla niin kauan, kunnes joko tekstitiedosto päättyy tai käyttäjä syöttää jotain muuta enterin lisäksi kts. esimerkkiajot. Aina kun yksi sivu tekstiä on luettu, tulostaa pääohjelma tekstin: Tiedosto testi.txt, (pelkkä enter jatkaa) Virheiden käsittely: (katso myös esimerkkiajot) * Parametreja tulee olla kaksi kappaletta. Jos näin ei ole, ohjelma tulostaa lyhyen käyttöohjeen. * Toisen parametrin tulee olla kokonaisluku. Jos näin ei ole, tulostetaan virheilmoitus. * Jos tiedostoa ei löydy, pääohjelman tulee käsitellä virhe ja tulostaa virheilmoitus. Testeissä käytetyt tekstitiedostot: testi.txt ja porssi.txt. Virhetapauksien esimerkkiajot java TekstitiedostonLukija Anna vain kaksi parametria! 1. Parametri kertoo luettavan tiedoston. 2. Parametri kerralla luettavien rivien lukumäärän (0 on vakio). [ohjelman suoritus päättyy] java TekstitiedostonLukija testi.txt a 2. Parametri ei ollut kokonaisluku! [ohjelman suoritus päättyy] java TekstitiedostonLukija olematon.txt 4 Tiedostoa olematon.txt ei löytynyt! [ohjelman suoritus päättyy] Esimerkkiajot java TekstitiedostonLukija testi.txt 5 1. 2. 3. 4. 5. Tiedosto testi.txt, (pelkkä enter jatkaa) 6. 7. 8. 9. 10. Tiedosto testi.txt, (pelkkä enter jatkaa) 11. 12. 13. 14. 15. Tiedosto testi.txt, (pelkkä enter jatkaa) 16. 17. 18. Tiedosto testi.txt, (pelkkä enter jatkaa) [ohjelman suoritus päättyy] java TekstitiedostonLukija porssi.txt 0 ELISA OYJ PÖRSSITIEDOTE 29.4.2004 KLO 8.00 ELISA OYJ:N OSAVUOSIKATSAUS TAMMI-MAALISKUU 2004 Elisan vertailukelpoinen liikevaihto laski hieman. Tulos ennen satunnaiseriä ja veroja parani selvästi. Markkinatilanne oli alkuvuonna hyvin haasteellinen, ja kilpailu kiristyi erityisesti matkaviestinnässä. Tammi-maaliskuussa Elisan tunnusluvut olivat: Tuloslaskelma 1-3/2004 1-3/2003 Pro forma miljoonaa euroa 1-3/2003* Liikevaihto 333 371 339 Käyttökate 119 85 86 Liikevoitto 59 7 17 Tulos ennen satunnaiseriä ja veroja 51 -5 6 Tulos/osake, euroa 0,23 -0,06 Investoinnit 43 40 36 Tiedosto porssi.txt, (pelkkä enter jatkaa) Rahoitusasema 1-3/2004 1-3/2003 2003 Nettovelka, milj. euroa 587 767 654 Omavaraisuusaste, % 44 38 40 Kassavirta investointien jälkeen 19 -10 105 *Ilman Saksan liiketoimintaa Markkinatilanne Kilpailutilanne jatkui kireänä. Matkaviestintäliiketoiminnassa hintaeroosio jatkui ja liittymien käyttö kasvoi. Palveluoperaattorimarkkina jakaantui kahteen pääsegmenttiin: Perinteisissä täyden palvelun liittymissä Elisa säilytti vahvan asemansa. Ns. halpaliittymämarkkinassa uudet toimijat lisäsivät markkinaosuuttaan. Elisa lanseerasi tähän segmenttiin uudet liittymät. Kiinteän verkon liiketoiminnassa laajakaistaliit- tyminen kasvu oli edelleen voimakasta ja perinteisten liittymien määrä pieneni. Tiedosto porssi.txt, (pelkkä enter jatkaa)q [ohjelman suoritus päättyy] Värikoodit: Sininen: Käyttäjän syöte Vihreä: Ohjelman tuloste Punainen: Erityishuomautus