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