next up previous contents index
Next: Sisäkkäisiä if-käskyjä Up: Valintakäsky (if) Previous: Valintakäsky (if)   Sisältö   Hakemisto

Koottu lause

Edellä olevassa esimerkissä oli täsmälleen yksi, joka piti suorittaa, jos if-käskyn ehto oli tosi. Usein kuitenkin halutaan, että tässä tilanteessa suoritetaan useampi käsky.

Esimerkki: henkilön painoindeksi lasketaan siten, että paino (kiloissa) jaetaan pituuden (metreissä) neliöllä. Painoindeksin avulla voidaan päätellä, onko henkilö ali-, yli- vai normaalipainoinen. Haluamme kirjoittaa ohjelman, joka pyytää käyttäjältä pituuden sekä painon ja tulostaa sitten henkilön painoindeksin.

Periaatteessa ohjelma on hyvin yksinkertainen: pyydetään ja luetaan käyttäjän paino ja pituus, lasketaan painoindeksi ja tulostetaan se. Ongelma on kuitenkin siinä, että jos käyttäjä antaa vahingossa pituudekseen 0, jakolaskussa syntyy virhetilanne -- nollalla jako -- ja ohjelma kaatuu antaen käyttäjälle varsin kummallisen virheilmoituksen. Haluamme kuitenkin ohjelman kertovan käyttäjälle tässä tilanteessa selvästi, miksi painoindeksiä ei voi laskea. Ohjelman rakenne on seuraava:

pyydä ja lue käyttäjän paino ja pituus; 
if (paino != 0) 
  laske painoindeksi 
  tulosta painoindeksi 
else 
  ilmoita, että painoindeksiä ei voi laskea

Haluamme siis suorittaa kaksi eri käskyä, jos if-käskyn ehto on tosi. Tämä voidaan tehdä kokoamalla nämä käskyt lohkoksi eli kootuksi lauseeksi panemalla ne aaltosulkujen sisään seuraavasti:

public class Painoindeksi1 {
  public static void main(String[] args) {
    double paino, pituus, painoindeksi;

    System.out.println("Anna painosi kiloissa");
    paino = Lue.dluku();
    System.out.println("Anna pituutesi metreissä");
    pituus = Lue.dluku();
    if (pituus != 0) {
      painoindeksi = paino / (pituus * pituus);
      System.out.println("Painoindeksisi on " + painoindeksi);
    }
    else 
      System.out.println("Virheellinen pituus - painoindeksiä ei voi laskea");
  }
}

Tällöin kaikki aaltosulkujen sisällä olevat käskyt suoritetaan, jos if-käskyn ehto on tosi. Lohkoon voidaan koota yhteen mielivaltainen määrä käskyjä. Samanlainen lohko voidaan tarvittaessa kirjoittaa myös else-sanan jälkeen.


next up previous contents index
Next: Sisäkkäisiä if-käskyjä Up: Valintakäsky (if) Previous: Valintakäsky (if)   Sisältö   Hakemisto
Kerttu Pollari-Malmi 2003-01-27