/* * Lausekielinen ohjelmointi II, Jorma Laurikkala. * * Jaardeina mitatun matkan metreiksi ja päinvastoin muuntava ohjelma. Syötteet * luetaan käyttäjältä Scanner-luokan avulla. Ylläpidettävyyttä on parannettu * vakioita käyttämällä. * * Jorma Laurikkala (jorma.laurikkala@tuni.fi). * * Viimeksi muutettu 28.10.2019. * */ // Otetaan käyttöön java.util-pakkauksen Scanner-ja Locale-luokat. import java.util.Scanner; import java.util.Locale; public class VielaParempiMuuntaja { public static void main(String[] args) { // Tunnetut muunnossuunnat vakioina. final char METREIKSI = 'm'; final char JAARDEIKSI = 'j'; // Muunnoskerroin (jaardit --> metrit) vakiona. final double KERROIN = 0.9144; // Lähde- ja kohdearvot. double jaardit; double metrit; // Tervehditään käyttäjää ja kerrotaan ohjelmasta. System.out.println("Moi! Muunnan jaardit metreiksi ja metrit jaardeiksi."); // Esitellään viite (muuttuja), luodaan syötevirtaa lukeva olio // ja liitetään viite olioon. Scanner lukija = new Scanner(System.in); // Lokalisoidaan lukija siten, että desimaalimerkki on piste. Locale enLokaali = new Locale("en"); lukija.useLocale(enLokaali); // Luetaan käyttäjältä muunnoksen suunta. System.out.println(METREIKSI + ") jaardit --> metrit."); System.out.println(JAARDEIKSI + ") metrit --> jaardit."); char muunnoksenSuunta = lukija.nextLine().charAt(0); // Metreiksi. if (muunnoksenSuunta == METREIKSI) { // Luetaan jaardit käyttäjältä. System.out.println("Anna jaardit:"); jaardit = lukija.nextDouble(); // Muunnetaan metreiksi. metrit = KERROIN * jaardit; // Tulostetaan muunnoksen tulos näytölle. System.out.println(metrit + " metriä."); } // Jaardeiksi. else if (muunnoksenSuunta == JAARDEIKSI) { // Luetaan metrit käyttäjältä. System.out.println("Anna metrit:"); metrit = lukija.nextDouble(); // Muunnetaan jaardeiksi. jaardit = 1 / KERROIN * metrit; // Tulostetaan muunnoksen tulos näytölle. System.out.println(jaardit + " jaardia."); } // Tuntematon suunta. else { System.out.println("En osaa."); } } }