Wie kann man ein Integer als String rückwärts mit switch Case ausgeben?

VINC767  12.05.2022, 18:10

Welche Programmiersprache? Java?

Mrwassgeht 
Fragesteller
 13.05.2022, 19:39

ja

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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--;
}
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

MrAmazing2  13.05.2022, 20:14

Danke für den Stern ^^

0

.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


ichweisnetwas  12.05.2022, 18:06

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

0

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.

Woher ich das weiß:Berufserfahrung – Programmierer