Wie kann man ein Integer als String rückwärts mit switch Case ausgeben?
Welche Programmiersprache? Java?
ja
3 Antworten
Schritt 1: Die einzelnen Ziffern von hinten nach vorne durchgehen
Meine Methode:
Du machst eine while-Schleife, die läuft bis die Zahl 0 ist. Und dann nimmst du dir immer die derzeit letzte Ziffer der Zahl, gibst den entsprechenden String aus und entfernst die Ziffer.
Mit zahl % 10 bekommst du die derzeit letzte Ziffer, mit zahl /= 10 schneidest du sie anschließend ab.
Stattdessen kannst du natürlich auch die Zahl in einen String oder ein Char-Array umwandeln und rückwärts mithilfe einer Zähler-Variable über die einzelnen Zeichen dieses Strings iterieren. Siehe Suboptimierer und ichweisnetwas. Durch das Umwandeln sind diese Methoden aber aufwändiger.
Schritt 2: Im Switch-Case den der Ziffer entsprechenden String ausgeben. Wenn zahl==1, dann print "Eins", wenn zahl==2 dann print "Zwei", usw.
-----
Hier ein paar mögliche Lösungen:
Meine Methode:
int number = 123456;
while(number>0) {
int digit = number%10;
switch(digit) {
case 0: System.out.print("null "); break;
case 1: System.out.print("eins "); break;
case 2: System.out.print("zwei "); break;
case 3: System.out.print("drei "); break;
case 4: System.out.print("vier "); break;
case 5: System.out.print("fuenf "); break;
case 6: System.out.print("sechs "); break;
case 7: System.out.print("sieben "); break;
case 8: System.out.print("acht "); break;
case 9: System.out.print("neun "); break;
}
number /= 10;
}
ichweisnetwas's Methode:
int number = 123456;
String numberStr = ""+number;
int counter = numberStr.length()-1;
while(counter>=0) {
char digit = numberStr.charAt(counter);
switch(digit) {
case '0': System.out.print("null "); break;
case '1': System.out.print("eins "); break;
case '2': System.out.print("zwei "); break;
case '3': System.out.print("drei "); break;
case '4': System.out.print("vier "); break;
case '5': System.out.print("fuenf "); break;
case '6': System.out.print("sechs "); break;
case '7': System.out.print("sieben "); break;
case '8': System.out.print("acht "); break;
case '9': System.out.print("neun "); break;
}
counter--;
}
Suboptimierer's Methode:
int number = 123456;
char[] numberStr = (""+number).toCharArray();
int counter = numberStr.length-1;
while(counter>=0) {
char digit = numberStr[counter];
switch(digit) {
case '0': System.out.print("null "); break;
case '1': System.out.print("eins "); break;
case '2': System.out.print("zwei "); break;
case '3': System.out.print("drei "); break;
case '4': System.out.print("vier "); break;
case '5': System.out.print("fuenf "); break;
case '6': System.out.print("sechs "); break;
case '7': System.out.print("sieben "); break;
case '8': System.out.print("acht "); break;
case '9': System.out.print("neun "); break;
}
counter--;
}
.toString()
und dann kannst z.b. ne Schleife mit CharAt() drüber laufen lassen und eben in ner neuen Variablen andersrum speichern.
gibt aber auch dafür bestimmt ne Funktion
Achso mit switch case sorry. Aber gut das geht auch easy. Z.b. eben mit CharAt()
kannste quasi fast genauso machen ist nur unstäbdlicher
Sind in Java Strings Arrays von Zeichen? Dann kannst du das über die Array-Syntax lösen. Sonst müsstest du Teile aus der Zeichenkette ausschneiden.
Ich würde so vorgehen:
Zuerst Umwandlung der Integerzahl in eine Zeichenkette. Dann
for(i=strZahl.length-1;i>=0;i--) {
switch(strzahl[i]){
case '0': Ausgabe('null');
case '1': Ausgabe('eins');
...
case '9': Ausgabe('neun');
}
Ausgabe(' ');
}
Ausgabe ist der in Java übliche Ausgabebefehl.