Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

8.3.3 Apumetodit

Tämän takia onkin ilman muuta järkevää eristää lukemiskoodi omaksi metodikseen:

	  /**
	   * Kysytään kokonaisluku. Jos annetaan ei-luku, kysytään uudelleen.
	   * @param kysymys näytölle tulostettava kysymys
	   * @param oletus arvo jota käytetään jos painetaanpelkkä Ret
	   * @return käyttäjän kirjoittama kokonaisluku
	   */
	  public static int kysy_int(String kysymys, int oletus)
	  {
	    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	    while ( true ) {
	      System.out.print(kysymys+" >");
	      String s = "";
	      try {
	        s = in.readLine();
	      } catch (IOException ex) {
	        continue; // jatkaa silmukkaa
	      }
	      if ( ( s == null ) || ( s.equals("") ) ) return oletus;
	      try {
	        return Integer.parseInt(s);
	      } catch (NumberFormatException ex) {
	        System.out.println("Ei numero: " + s);
	      }
	    }
	  }

Nyt omassa ohjelmassamme voidaan korvata "koko hirveä sotku" vain yhdellä rivillä:

	    matka_mm = kysy_int("Anna matka millimetreinä",0);

Lisäsimme aliohjelmaamme vielä kutsuun yhden parametrin: oletus. Näin voidaan käyttäjälle antaa mahdollisuus painaa pelkästään Enter ja silti saadaan järkevä vastaus.

Tehtävä 8.5 Oletuksen tulostaminen

Lisää apumetodiin kysy_int vielä oletusarvon tulostaminen sulkuihin ennen väkäsen tulostamista. Eli tulostus olisi:
	Anna matka millimeterinä (0) >


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys