Lukeminen näppäimistöltä

Olet muuttujilla laskiessasi aina ensin sijoittanut muuttujaan arvon ja tämän jälkeen olet voinut käyttää muuttujan sisältämää arvoa laskuissasi. Esimerkkinä meillä oli ohjelma, joka laski kolmen luvun keskiarvon:

      public class Keskiarvo {
          public static void main(String[] args) {
              int luku1, luku2, luku3;
              double keskiarvo;
  
              luku1 = 8;
              luku2 = 9;
              luku3 = 10;
  
              keskiarvo = (luku1 + luku2 + luku3) / 3.0;
              System.out.println(keskiarvo);
          }
      }
    

Ehkä jo arvaatkin, että olisi paljon viisaampaa pyytää luvut käyttäjältä, jolloin ohjelmaa ei tarvitsisi muutella ja aina kääntää uudelleen, kun halutaan laskea eri lukujen keskiarvoja.

Koska näppäimistöltä lukeminen on Javassa poikkeuksellisen ongelmallista, käytetään tällä kurssilla lukemista helpottamaan tehtyä apuluokkaa Lue.java. Se sisältää käskyt (metodit) eri tyyppisten arvojen lukemista varten. Seuraavia käskyjä voit käyttää, kun kopioit apuluokan siihen hakemistoon, jossa käännät ja suoritat ohjelmiasi. Käskyt ovat:

Voit hyvin arvata, että näitä käskyjä käytetään sijoituslauseissa. Tällöin tuo käsky korvaa sen arvon, joka sijoitetaan. Siis esimerkiksi lukiesssasi desimaaliluvun näppäimistöltä double-tyyppiseen muuttujaan nimeltä kivaLuku kirjoitat:

      double kivaLuku;

      kivaLuku = dluku();
    

Esimerkissä siis dluku(); komento pyytää käyttäjältä desimaaliluvun ja sinä sijoitat saadun luvun muuttujaan kivaLuku. Voit luottaa siihen, että saamasi luku on desimaaliluku, koska käsky tarkistaa automaattisesti, että käyttäjä antaa luvun eikä esim. kirjaimia.

Samalla tavoin toimivat kluku() , merkki() ja rivi() -käskyt, joilla pyydät arvot int-, char- ja String- tyypin muuttujiin. Seuraavassa pätkässä tehdään esimerkkisijoitukset, jossa kaikki syötettävät arvot pyydetään käyttäjältä:

      int kokonaisluku;
      double desimaaliluku;
      char kirjain;
      String lause;

      kokonaisluku = kluku();       
      desimaaliluku = dluku();
      kirjain = merkki();
      lause = rivi();

      // muuttujissa on nyt käyttäjän antamat arvot
    

Muutetaan vielä lopuksi alussa esitelty kolmen luvun keskiarvon laskeva ohjelma pyytämään luvut käyttäjältä:

      public class Keskiarvo {
          public static void main(String[] args) {
              int luku1, luku2, luku3;
              double keskiarvo;
  
              luku1 = kluku();    //tässä pyydetään arvot käyttäjältä
              luku2 = kluku();    //tässä pyydetään arvot käyttäjältä
              luku3 = kluku();    //tässä pyydetään arvot käyttäjältä
  
              keskiarvo = (luku1 + luku2 + luku3) / 3.0;
              System.out.println(keskiarvo);
          }
      }