Java :: Aufgabe #291
1 Lösung

Zahlen in Wörtern ausdrücken
Anfänger - Java
von Gisbert5020
- 30.04.2020 um 15:17 Uhr
Schreiben Sie ein Programm, das Zahlen von 0 bis 99 in Wörtern fasst.
Zusatzaufgabe : Erweitern Sie das Programm von 0 bis 1000.
Zusatzaufgabe : Erweitern Sie das Programm von 0 bis 1000.
Lösungen:

package versuchslabor; import java.util.HashMap; import java.util.Map; // Schreiben Sie ein Programm, das Zahlen von 0 bis 99 in Wörtern fasst. // Zusatzaufgabe : Erweitern Sie das Programm von 0 bis 1000. public class ZahlAlsText { // Basis Wörterbuch, enthält auch Besonderheiten wie 11 und 12 static Map<String, String> woerterbuch = new HashMap<String, String>() { { put("0", "Null"); put("1", "Ein"); put("2", "Zwei"); put("3", "Drei"); put("4", "Vier"); put("5", "Fünf"); put("6", "Sechs"); put("7", "Sieben"); put("8", "Acht"); put("9", "Neun"); put("10", "Zehn"); put("11", "Elf"); put("12", "Zwölf"); put("20", "Zwanzig"); put("1000", "Tausend"); } }; public static void main(String[] args) { for (int intZahl = 0; intZahl <= 1000; intZahl++) { String zahlAlsText = findeZahlAlsText(intZahl); System.out.println(intZahl + " als Wort lautet: " + zahlAlsText); } } private static String findeZahlAlsText(int intZahl) { String strZahl = String.valueOf(intZahl); String zahlAlsText = woerterbuch.get(strZahl); //steht Zahl direkt im Wörterbuch? if (zahlAlsText == null) { switch (strZahl.length()) { case 2: // 13-99 zahlAlsText = zehner(strZahl); break; case 3: // >= 100 zahlAlsText = hundert(strZahl); break; default: zahlAlsText = "unbekannte Zahl"; break; } } return zahlAlsText; } private static String zehner(String strZahl) { String zahlAlsText = "unbekannt"; int intZahl = Integer.parseInt(strZahl); if (intZahl % 10 == 0) { zahlAlsText = woerterbuch.get(strZahl.substring(0, 1)) + "Zig"; } else if (intZahl > 12 && intZahl < 20) { zahlAlsText = woerterbuch.get(strZahl.substring(1, 2)) + "Zehn"; } else if (intZahl >= 20 && intZahl < 30) { zahlAlsText = woerterbuch.get(strZahl.substring(1, 2)) + "Zwanzig"; } else { zahlAlsText = woerterbuch.get(strZahl.substring(1, 2)) + "Und" + woerterbuch.get(strZahl.substring(0, 1)) + "Zig"; } return zahlAlsText; } private static String hundert(String strZahl) { String zahlAlsText = woerterbuch.get(strZahl.substring(0, 1)) + "Hundert"; // Zehner-Anylsyse ist nicht für glatte Hunterter nötig - 100, 200, 300,... if (Integer.parseInt(strZahl) % 100 != 0) { zahlAlsText += zehner(strZahl.substring(1, 3)); } return zahlAlsText; } }