Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

8.3.2 Lukuarvon selvittäminen merkkijonosta

Kaiken edellä mainitun jälkeen meillä on käytössä oliossa s käyttäjän syöttämä merkkijono. Seuraava ongelma on saada tämä merkkijono muutettua numeroksi, jolla voidaan jopa jotakin laskeakin. Kokonaisluvun tapauksessa tämä onnistuu käyttämällä luokkaa Integer ja pyytämällä tätä selvittämään luvun arvon:

	    matka_mm = Integer.parseInt(s);

Mikäli käyttäjä on kiltisti syöttänyt kokonaisluvun, niin kaikki menee hienosti. Mutta jos käyttäjä antaa merkkijonon, joka on jotakin muuta kuin kokonaisluku, niin silloin parseInt heittää poikkeuksen:

	bash-2.05a$ java Matka
	Lasken 1:200000.0 kartalta millimetreinä mitatun matkan
	kilometreinä luonnossa.
	Anna matka millimetreinä>kolme
	Exception in thread "main" java.lang.NumberFormatException: kolme
	        at java.lang.Integer.parseInt(Integer.java:414)
	        at java.lang.Integer.parseInt(Integer.java:463)
	        at Matka.main(Matka.java:32)
	bash-2.05a$

Jos haluamme tästäkin siististi selvitä ja vielä ystävällisesti huomauttaa käyttäjälle, tarvitsee muunnoksen ympärille laittaa myös poikkeuskäsittely ja vielä koko lukeminen silmukkaan. Kaikkien näiden muutosten jälkeen pelkkä yhden kokonaisluvun lukeminen viekin jo likemmäksi 20 riviä ja "sotkee" muuten yksinkertaisen ohjelmamme rakenteen lähes täysin.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys