# Ziffern tauschen



## Guest (21. Dez 2006)

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.


```
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


----------



## The_S (21. Dez 2006)

Am besten arbeitest du mit einem Char-Array


```
char[] zeichen = str.toCharArray();
```

Da kannst du dann die einzelnen Zeichen lesen und setzen.


----------



## Guest (22. Dez 2006)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Am besten arbeitest du mit einem Char-Array
> 
> 
> ```
> ...



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.


----------



## Antares (22. Dez 2006)

Das klappt so weit ganz gut!

Danke! 

Neues Problem:

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

Ich habe jetzt:


```
char [] cChar = str.toCharArray();
int j = 56;
[...]
cChar[i] = (char) (j - '0');
[...]
j = (char) cChar <==== ?????
```


----------



## Wildcard (22. Dez 2006)

Mach aus dem char[] einen String und benutz Integer.parseInt.


----------



## The_S (22. Dez 2006)

Integer.parseInt(String.valueOf(cChar));


----------



## Antares (22. Dez 2006)

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?


----------



## The_S (22. Dez 2006)

Du hast die Ziffern falsch in das Array eingefügt


----------



## Antares (22. Dez 2006)

Ok. ^^

Und wie mache ich es dann richtig?


----------



## The_S (22. Dez 2006)

kA, wie machst du es denn jetzt? Normal einfach


```
char[position] = '2';
```


----------



## Antares (22. Dez 2006)

Wie oben im Code schon gepostet, habe ich meinen Int-Wert in einer Variablen gespeichert. Bei deiner geposteteten Lösung gibt es einen Fehler.


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

Daher hatte ich dann die Variante gewählt:


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

Was dann den Fehler ein paar Posts höher hervorrief.


----------



## mephi (22. Dez 2006)

wie wärs mit?


```
char c[] = String.valueOf(target).toCharArray();
c[x-1] = String.valueOf(y).charAt(0);
String temp = String.valueOf(c);
```


----------



## The_S (23. Dez 2006)

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!


----------



## Antares (23. Dez 2006)

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...


----------



## The_S (23. Dez 2006)

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


```
array[0] = String.valueOf(2).charAt(0);
```


----------



## Antares (23. Dez 2006)

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:


----------

