// Aikoja.java Copyright (c) 2006 Kari Laitinen // http://www.naturalprogramming.com // 2006-03-05 Tiedosto luotu. // 2006-03-05 Viimeisin muutos. import java.util.* ; abstract class AikaNyt { protected int tunnit_nyt ; protected int minuutit_nyt ; protected int sekunnit_nyt ; public AikaNyt() { Calendar koneen_aika_nyt = new GregorianCalendar() ; tunnit_nyt = koneen_aika_nyt.get( Calendar.HOUR_OF_DAY ) ; minuutit_nyt = koneen_aika_nyt.get( Calendar.MINUTE ) ; sekunnit_nyt = koneen_aika_nyt.get( Calendar.SECOND ) ; } abstract public void tulosta() ; } // It is not entirely true that the 12-hour a.m./p.m. time // would be used everywhere in America, and the 24-hour time // would be used everywhere in Europe. The names AmerikkalainenAika // and EurooppalainenAika just happen to be nice names to // distinguish these two different ways to display time. class AmerikkalainenAika extends AikaNyt { public void tulosta() { int[] amerikkalaiset_tunnit = { 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } ; System.out.printf( "%d:%02d:%02d", amerikkalaiset_tunnit[ tunnit_nyt ], minuutit_nyt, sekunnit_nyt ) ; if ( tunnit_nyt < 12 ) { System.out.print( " a.m." ) ; } else { System.out.print( " p.m." ) ; } } } class EurooppalainenAika extends AikaNyt { public void tulosta() { System.out.printf( "%d:%02d:%02d", tunnit_nyt, minuutit_nyt, sekunnit_nyt ) ; } } class Aikoja { public static void main( String[] ei_kaytossa ) { Scanner nappaimisto = new Scanner( System.in ) ; AikaNyt naytettava_aika ; System.out.print( "\n Anna luku 12 nahdaksesi ajan 12-tuntisessa" + "\n a.m./p.m.-formaatissa. Mika tahansa muu luku" + "\n antaa ajan 24 tunnin formaatissa: " ) ; int kayttajan_vastaus = nappaimisto.nextInt( ) ; if ( kayttajan_vastaus == 12 ) { naytettava_aika = new AmerikkalainenAika() ; } else { naytettava_aika = new EurooppalainenAika() ; } System.out.print( "\n Aika on nyt " ) ; naytettava_aika.tulosta() ; System.out.print( "\n" ) ; } }