ALOITTELIJAN JAVA-OPAS


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.

5.1 Syöte- ja tulostusvirrat

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.*;
Tiedon luku hoituu käyttämällä syötevirtaa (input stream) ja tiedon tuloste ohjataan tulostevirtaan (output stream). Virrat ovat käyttäjälle näkymättömissä ts. aloittelijan tarvitsee tietää vain millä komennolla virtoja voidaan ohjata.
System - luokka Javassa sisältää seuraavat virran käsittelijät:

  • System.out , tulostevirta
  • System.in , syötevirta
  • System.err , virhetulostus

    5.2 Tiedon tulostus

    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.
    Jos halutaan tulostaa vain pelkkä muuttujan arvo, ei lainausmerkkejä tietenkään tarvita.

    5.3 Erikoismerkkien tulostus

    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:
    System.out.println("\""); joka tulostasi näytölle: "
    Liitteestä selviää miten muut erikoismerkit voidaan tulostaa.

    5.4 Käyttäjän syötteiden lukeminen

    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;
    luku = Integer.parseInt(merkkijono);

    Myös liukulukua varten löytyy oma metodi Double - luokasta.


  • Tietojärjestelmien dokumentointi 2005 | Aloittelijan JAVA-opas


    Valid CSS!