Java :: Aufgabe #291 :: Lösung #1
1 Lösung
#291
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.
#1
von unknown (250 Punkte)
- 03.09.2020 um 10:14 Uhr
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;
}
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
