Ziffern tauschen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Ich möchte gerne die Ziffern einer Zahl vertauschen.

Gegeben ist eine beliebig große Zahl und ich möchte gerne jede einzele Ziffer wechseln.

Beispiel:
gegeben: 13
erste Ziffer soll vertauscht werden, letzte erhalten. (zum Beispiel 43)

Das gleiche sollte auch mit anderen beliebig großen Zahlen funktionieren.

Ich habe hier im Forum einen Codeschnipsel gefunden und versucht, ihn anzupassen. Das Problem ist das zurückschreiben der einzelnen Ziffern. Ist im Code angemerkt.

Code:
    public static boolean Change(int zahl)
    {
        int iCur = 0;
        String str = Integer.toString(zahl);
        for (int i=0; i<str.length(); i++)
        {
            iCur = Character.getNumericValue(str.charAt(i));
            str.charAt(i) = (char) ++iCur; <==== Wie bewerkstellige ich das?
        }
        return true;
    }

Kann mir jemand weiterhelfen?

Vielen Dank schon mal!

MfG Heiko
 
Am besten arbeitest du mit einem Char-Array

Code:
char[] zeichen = str.toCharArray();

Da kannst du dann die einzelnen Zeichen lesen und setzen.
 
Hobbit_Im_Blutrausch hat gesagt.:
Am besten arbeitest du mit einem Char-Array

Code:
char[] zeichen = str.toCharArray();

Da kannst du dann die einzelnen Zeichen lesen und setzen.

Jup genau, mach aus deiner Zahl im Notfall vorher nen String und speicher dir diesen in einem Char-Array, dann kannst du beliebig auf die einzelnen Zahlen zugreifen und diese bei Bedarf auch ändern.
 
Das klappt so weit ganz gut!

Danke! 🙂

Neues Problem:

Wie wandle ich das Array wieder zurück in einen Integer um?

Ich habe jetzt:

Code:
char [] cChar = str.toCharArray();
int j = 56;
[...]
cChar[i] = (char) (j - '0');
[...]
j = (char) cChar <==== ?????
 
Ich bekomme nun folgenden Fehler beim Ausführen:

java.lang.NumberFormatException: For input string: "?"

Habe ich die Ziffern richtig in das Array eingefügt oder liegt da der Fehler?
 
kA, wie machst du es denn jetzt? Normal einfach

Code:
char[position] = '2';
 
Wie oben im Code schon gepostet, habe ich meinen Int-Wert in einer Variablen gespeichert. Bei deiner geposteteten Lösung gibt es einen Fehler.

Code:
int iBlubb = 10;
char[i] = iBlubb; <=== Compiler Warning: Possible loss of precision

Daher hatte ich dann die Variante gewählt:

Code:
char[i] = (char) iBlubb;
bzw.
char[i] = (char) (j -'0');

Was dann den Fehler ein paar Posts höher hervorrief.
 
wie wärs mit?

Code:
char c[] = String.valueOf(target).toCharArray();
c[x-1] = String.valueOf(y).charAt(0);
String temp = String.valueOf(c);
 
Du machst einen Grundlegenden Fehler. Wenn du ein int in ein char castest, dann bekommt das char das Zeichen, welches dem ASCII Wert des ints entspricht. Da liegt dein Fehler!
 
Hobbit_Im_Blutrausch hat gesagt.:
Du machst einen Grundlegenden Fehler. Wenn du ein int in ein char castest, dann bekommt das char das Zeichen, welches dem ASCII Wert des ints entspricht. Da liegt dein Fehler!

ja, aber bitte WIE kann ich es umwandeln? Ich brauche doch nur die Syntax. In C++ wäre ich nach einer halben Stunde mit dem ganzen Programm fertig gewesen. Die Java-Syntax ist mir leider unbekannt. Ich habe schon einiges gelesen, aber alles hat nicht funktioniert. In C++ gibt's einen Befehl namens "atoi" (array to integer). Gibt es so was in Java auch? Wenn nicht, wie kann ich denn die Probleme nun lösen? 🙁

edit: Werde mir mal mephis Code anschauen...
 
Wenn du in einem Char-Array einen char austauschen möchtest, welcher dir nur als integer vorliegt kannst du das z. B. so machen:

Code:
array[0] = String.valueOf(2).charAt(0);
 
Die Lösung von mephi hat funktioniert und deine wird dann wohl auch klappen. Also Danke an euch! 🙂 :toll:

Bis zur nächsten Frage! :wink:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben