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

VINC767  12.05.2022, 18:10

Welche Programmiersprache? Java?

Mrwassgeht 
Beitragsersteller
 13.05.2022, 19:39

ja

3 Antworten

Vom Beitragsersteller 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 ^^

.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

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