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.
Anna matka millimeterinä (0) >