studyklar
GdI 2 · Übungsblatt 3 · Aufgabe 2

Zahlwörter: eine Zahl von 0 bis 99 als Wort ausgeben

Ein Array kann auch Wörter speichern. Hier hält es die Zahlwörter von „null“ bis „neunundneunzig“. Das Programm fragt nach einer Zahl und schlägt das passende Wort nach. Rechts steht das fertige Programm, die Zeilen zum aktuellen Schritt sind hervorgehoben. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 2

Gegeben ist das String-Array zahlwoerter in der Klasse „Zahlwoerter“. Programmieren Sie unter Verwendung dieses Arrays Folgendes: Der Benutzer kann eine Zahl zwischen 0 und 99 eingeben, und das Programm gibt das entsprechende Zahlwort aus.

Gegeben ist ein Array zahlwoerter mit 100 Wörtern. Der Benutzer tippt eine Zahl zwischen 0 und 99 ein, zum Beispiel 37. Das Programm soll das Wort dazu ausgeben: „siebenunddreißig“.

Die Datei mit der Klasse Zahlwoerter ist im Original vorgegeben, liegt uns aber nicht vor. Das Array in Zeile 7 bis 19 ist darum nachgebaut. Es enthält die Zahlwörter in der üblichen Schreibweise. Neu zu schreiben sind nur die Zeilen 21 bis 25.

Merke: Steht das Wort zur Zahl n genau auf Platz n, ist die Zahl selbst der Index. Man muss nichts suchen, ein Zugriff genügt.
  1. Das vorgegebene Array ansehen.
  2. Prüfen, auf welchem Platz welches Wort steht.
  3. Die Zahl einlesen.
  4. Das Wort auf diesem Platz ausgeben.

Das vorgegebene Array

        // Vorgegeben: die Zahlwörter von 0 bis 99, eine Zeile je Zehner        String[] zahlwoerter = {                "null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun",                "zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn",                "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fünfundzwanzig", "sechsundzwanzig", "siebenundzwanzig", "achtundzwanzig", "neunundzwanzig",                "dreißig", "einunddreißig", "zweiunddreißig", "dreiunddreißig", "vierunddreißig", "fünfunddreißig", "sechsunddreißig", "siebenunddreißig", "achtunddreißig", "neununddreißig",                "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fünfundvierzig", "sechsundvierzig", "siebenundvierzig", "achtundvierzig", "neunundvierzig",                "fünfzig", "einundfünfzig", "zweiundfünfzig", "dreiundfünfzig", "vierundfünfzig", "fünfundfünfzig", "sechsundfünfzig", "siebenundfünfzig", "achtundfünfzig", "neunundfünfzig",                "sechzig", "einundsechzig", "zweiundsechzig", "dreiundsechzig", "vierundsechzig", "fünfundsechzig", "sechsundsechzig", "siebenundsechzig", "achtundsechzig", "neunundsechzig",                "siebzig", "einundsiebzig", "zweiundsiebzig", "dreiundsiebzig", "vierundsiebzig", "fünfundsiebzig", "sechsundsiebzig", "siebenundsiebzig", "achtundsiebzig", "neunundsiebzig",                "achtzig", "einundachtzig", "zweiundachtzig", "dreiundachtzig", "vierundachtzig", "fünfundachtzig", "sechsundachtzig", "siebenundachtzig", "achtundachtzig", "neunundachtzig",                "neunzig", "einundneunzig", "zweiundneunzig", "dreiundneunzig", "vierundneunzig", "fünfundneunzig", "sechsundneunzig", "siebenundneunzig", "achtundneunzig", "neunundneunzig"        };

String[] ist ein Array aus Texten. Die Werte stehen in geschweiften Klammern, durch Kommas getrennt. Java zählt sie und legt genau so viele Plätze an, hier 100. Ein new braucht man in dieser Schreibweise nicht.

Jede Programmzeile hält einen Zehner: Zeile 9 die Wörter für 0 bis 9, Zeile 10 die für 10 bis 19 und so weiter bis Zeile 18 mit 90 bis 99. Lange Zeilen sind im Kasten umgebrochen.

Aus Vorlesung 3, Folie 2 („Arrays (Felder)“): String[] namen = {"Anna", "Ben"}; deklariert ein String-Array und füllt es gleich mit Werten.

Auf Platz n steht das Wort für n

PlatzZugriffWort
0zahlwoerter[0]null
12zahlwoerter[12]zwölf
37zahlwoerter[37]siebenunddreißig
99zahlwoerter[99]neunundneunzig

Der Index beginnt bei 0. Das erste Wort „null“ steht also auf Platz 0, „eins“ auf Platz 1. Weil die Wörter lückenlos der Reihe nach stehen, gilt das bis zum Ende: Platz 99 hält „neunundneunzig“.

Ein Beispiel mit 37: Die Dreißiger stehen in Zeile 12. Platz 30 ist dort das erste Wort, Platz 37 das achte: „siebenunddreißig“. Mit zahlwoerter[37] holt Java genau dieses Wort.

Noch 3 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Das Programm Zahlwoerter

Zahl eingeben, Wort ausgeben

Abbildung 1Das Programm Zahlwoerter

Zahl eingeben, Wort ausgeben

import java.util.Scanner; public class Zahlwoerter {     public static void main(String[] args) {         // Vorgegeben: die Zahlwörter von 0 bis 99, eine Zeile je Zehner        String[] zahlwoerter = {                "null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun",                "zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn",                "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fünfundzwanzig", "sechsundzwanzig", "siebenundzwanzig", "achtundzwanzig", "neunundzwanzig",                "dreißig", "einunddreißig", "zweiunddreißig", "dreiunddreißig", "vierunddreißig", "fünfunddreißig", "sechsunddreißig", "siebenunddreißig", "achtunddreißig", "neununddreißig",                "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fünfundvierzig", "sechsundvierzig", "siebenundvierzig", "achtundvierzig", "neunundvierzig",                "fünfzig", "einundfünfzig", "zweiundfünfzig", "dreiundfünfzig", "vierundfünfzig", "fünfundfünfzig", "sechsundfünfzig", "siebenundfünfzig", "achtundfünfzig", "neunundfünfzig",                "sechzig", "einundsechzig", "zweiundsechzig", "dreiundsechzig", "vierundsechzig", "fünfundsechzig", "sechsundsechzig", "siebenundsechzig", "achtundsechzig", "neunundsechzig",                "siebzig", "einundsiebzig", "zweiundsiebzig", "dreiundsiebzig", "vierundsiebzig", "fünfundsiebzig", "sechsundsiebzig", "siebenundsiebzig", "achtundsiebzig", "neunundsiebzig",                "achtzig", "einundachtzig", "zweiundachtzig", "dreiundachtzig", "vierundachtzig", "fünfundachtzig", "sechsundachtzig", "siebenundachtzig", "achtundachtzig", "neunundachtzig",                "neunzig", "einundneunzig", "zweiundneunzig", "dreiundneunzig", "vierundneunzig", "fünfundneunzig", "sechsundneunzig", "siebenundneunzig", "achtundneunzig", "neunundneunzig"        };         Scanner scanner = new Scanner(System.in);        System.out.print("Ihre Zahl (zwischen 0 und 99): ");        int zahl = scanner.nextInt();        System.out.println(zahl + " als Wort: " + zahlwoerter[zahl]);        System.out.println();    }}
LegendeDas ganze Programm.