|
|
5. Tiedon syöttö ja tulostus
Ohjelmointikielien eräs tärkein ominaisuus on tiedon tallennus ja lukeminen.
Tässä luvussa käsitellään tiedon syöttö ja tulostus Javassa. Tiedon tulostuksen osalta käydään läpi
tulostus näytölle. Molemmista käydään läpi lyhyet esimerkit, joiden avulla tutustutaan aiheeseen
käytännönläheisesti.
Javassa tiedon syöttö ja tulostus perustuu ns. virtoihin (streams). Java käsittelee tiedon tulostuksen ja syöttämisen virtoina, riippumatta
tietolähteestä. Kuten tämän luvun esimerkeissä huomataan, peritään kaikki syötteisiin ja tulosteisiin tarvittavat
luokat ja niiden metodit Javassa java.io - paketista. Tämä hoituu yksinkertaisesti lisäämällä ohjelmakoodin alkuun rivi: import java.io.*;
Puhuttaessa tiedon tulostuksesta huomataan, että sitä voidaan tehdä niin näytölle, kuin tiedostoihinkin.
Tässä oppaassa keskitytään tiedon tulostukseen näytölle.
Tiedon tulostus käy Javassa helposti käyttämällä System.out.print() metodia. Katsotaan ensin miten sillä
voidaan tulostaa näytölle teksti: Hei maailma!
System.out.print("Hei maailma!");
Jos halutaan tulostaa rivi kerrallaan, rivivaihdon kera, käytetään System.out.println() metodia.
Monesti tulostuksen yhteydessä joudutaan tulostamaan myös muuttujien arvoja. Tämä käy yksinkertaisesti erottamalla
muuttujat varsinaisesta tekstistä + merkillä. Muu tulostettava teksti on aina lainausmerkkien sisässä. Oletetaan esimerkiksi:
//Määritellään kokonaislukumuuttuja ika, jonka arvoksi laitetaan 50
int ika = 50;
System.out.print("Olen " + ika + " vuotta vanha.");
Nyt ruudulle tulostuisi: Olen 50 vuotta vanha.
Joskus tarvitaan tulostaa erikoismerkkejä, joita ei voida suoraan kirjoittaa lainausmerkkien sisälle sellaisenaan
johtuen Javan syntaksista. Tällainen ongelma muodostuisi esimerkiksi jos haluttaisi tulostaa lainausmerkki.
Koska System.out.println() metodi käyttää omassa syntaksissa lainausmerkkejä, on ne erotettava jotenkin. Tämä
onnistuu kauttaviivan avulla. Lainausmerkki voidaan tulostaa esim:
Javassa käyttäjien antamien syötteiden lukeminen vaatii, että luodaan lukemista varten BufferedReader-luokan
olio. BufferedReader luokka sisältää metodin readLine(), jolla voidaan lukea yksi rivi syötteestä kerrallaan.
Olion luonnin yhteydessä kerrotaan mistä syötettä luetaan. Tässä oppaassa keskitytään syötteen lukemiseen
standardisyötevirrasta, joka annetaan näppäimistöltä.
Seuraavaksi katsotaan lyhyt esimerkki, jossa käyttäjän antamaa tietoa luetaan muuttujaan. Huom! tietojen lukemiseen
liittyvät poikkeukset ovat tarkistettavia poikkeuksia. Siksi ohjelmoijan on otettava ne huomioon joko sieppaamalla
ne (try-catch, esimerkissä alla) tai ilmoittamalla, että poikkeus voi tulla (throws).
import java.io.*;
public class Tulostus {
public static void main (String[] args) {
//Määritellään muuttuja merkkijono, johon käyttäjän antama syöte sijoitetaan.
String merkkijono;
//Luodaan BufferedReader-luokan olio johon luetaan käyttäjän antama syöte.
BufferedReader syote = new BufferedReader(new InputStreamReader(System.in));
try {
//Pyydetään käyttäjää antamaan jokin merkkijono
System.out.println("Anna merkkijono");
merkkijono = syote.readLine(); //Sijoitetaan syöte muuttujaan
//Lopuksi tulostetaan käyttäjän antama syöte näytölle
System.out.println(merkkijono);
}
//Hoidetaan mahdollinen virheiden käsittely
catch (Exception e)
{
System.out.println("Virhe: " + e);
}
}
}
Edellä ollut esimerkki siis näytti kuinka merkkijono luetaan muuttujaan. Joskus tarvitaan myös lukea numeerista
tietoa ja sijoittaa se esim. kokonaislukumuuttujaan. Koska tieto on luettu merkkijonona, joudutaan se muuttamaan
kokonaisluvuksi. Tähän tehtävään kelpaa Integer - luokan metodi parseInt. Tällöin: int luku;
Myös liukulukua varten löytyy oma metodi Double - luokasta.
|