IO.java |
1 package fi.jyu.mit.ohj2; 2 /** 3 * Alkeellinen IO-luokka hoitamaan mm. yhden näppäimen painallukseen 4 * liittyviä tehtäviä. 5 * 6 * @author Vesa Lappalainen 7 * @version 1.0, 10.02.2003 8 */ 9 public class IO { 10 11 /** 12 * Luetaan yksi käyttäjän painama merkki 13 * @return käyttäjän painama merkki 14 */ 15 public static char lue_merkki() { // NOPMD sallitaan alleviiva historian painolastina 16 // String s = Syotto.lue(""); 17 // if ( s.length() == 0 ) return 0; 18 // return s.charAt(0); 19 return Readkey.getChar(); 20 } 21 22 /** 23 * Rivinvaihto 24 */ 25 public static final String RIVINVAIHTO = "\r\n"; 26 27 /** 28 * Ei käytetä oletusarvoa 29 */ 30 public static final char EI_OLETUSTA = 0; 31 32 /** 33 * Kaikki merkit kelpaavat 34 */ 35 public static final String KAIKKI_KELPAA = null; 36 37 /** 38 * Muutetaan merkit isoiksi ennen vertailua ja palautusta 39 */ 40 public static final boolean MERKKI_ISOKSI = true; 41 42 43 /** 44 * Odotetaan yhden merkin painamista. Vain jonossa kelpaavat olevat 45 * hyväksytään. Jos painetaan [Enter], palautetaan merkki oletus. 46 * Jos merkki_isoksi == true, muutetaan merkki ennen vertailua ja palautusta 47 * isoksi kirjaimeksi. 48 * Esim. <pre>c = odota_nappain("KE",'K',MERKKI_ISOKSI)</pre> 49 * odottaa kunnes painetaan joko K,k,E,e tai [Enter]. Jos painetaan 50 * [Enter], palautetaan 'K', muuten ko. painettu merkki. 51 * 52 * @param kelpaavat Joukko kirjaimia jotka kelpaavat. null = kaikki kelpaa 53 * @param oletus Merkki joka palautetaan [Enter] painamisesta, 0 = ei oltusta 54 * @param merkki_isoksi muutetaanko merkki isoksi kirjaimeksi (true) vai ei 55 * @return käyttäjän painama merkki, joko joukosta kelpaavat tai sitten oletus 56 */ 57 public static char odota_nappain(String kelpaavat, char oletus, // NOPMD sallitaan alleviiva historian painolastina 58 boolean merkki_isoksi) { 59 char painettu; 60 do { 61 painettu = lue_merkki(); 62 if ( merkki_isoksi ) painettu = Character.toUpperCase(painettu); 63 if ( oletus != EI_OLETUSTA && RIVINVAIHTO.indexOf(painettu) >= 0 ) 64 return oletus; 65 } while ( kelpaavat != null && kelpaavat.indexOf(painettu) < 0 ); 66 return painettu; 67 } 68 69 70 /** 71 * Odotetaan kunnes käyttäjä painaa jotakin merkkiä 72 */ 73 public static void odota_jotakin() { // NOPMD sallitaan alleviiva historian painolastina 74 System.out.println("Paina jotakin!"); 75 odota_nappain(KAIKKI_KELPAA,EI_OLETUSTA,MERKKI_ISOKSI); 76 } 77 78 79 /** 80 * Odotetaan kunnes käyttäjä painaa joko K tai E 81 * @return true jos käyttäjä painaa K, muuten false 82 */ 83 public static boolean kylla_vastaus() { // NOPMD sallitaan alleviiva historian painolastina 84 return (odota_nappain("KE",'K',MERKKI_ISOKSI)=='K'); 85 } 86 87 88 /** 89 * Testataan syöttöluokkaa 90 * @param args ei käytössä 91 */ 92 public static void main(String[] args) { 93 String kelpaavat = "ABCDE"; 94 System.out.print("Paina joku kirjaimista " + kelpaavat + " (F) :"); 95 char c = odota_nappain(kelpaavat,'F',MERKKI_ISOKSI); 96 System.out.println(); 97 System.out.println("Painoit " + c); 98 odota_jotakin(); 99 } 100 } 101 102