# Zahl umdrehen?



## emorej (15. Jun 2015)

Ziel: Man tippt eine beliebige Zahl (Bsp.: 123) ein und ich würde dann gerne in eine Variabel 321 stehen haben.

Also ein Palindrom.


Ich hatte die Idee, dies mit einem Integer zu tun und diesen dann durch 10 zu teilen aber komme irgendwie auch nicht weiter. Wenn ich 123 durch 10 teilen würde, würde ich ja 12 erhalten, aber weiß dann doch nicht, wie ich das lösen kann.

Danke schonmal im Voraus!

MfG


----------



## Tarrew (15. Jun 2015)

Die Idee mit dem durch 10 teilen ist garnicht so schlecht.
Allerdings solltest du vorher erst modulo 10 rechnen. 

123%10 = 3
123/10=12

12%10=2
12/10=1

1%10=1
1/10=0 -> Abbrechen


----------



## Joose (15. Jun 2015)

Wenn du eine Formel bzw. Gleichung kennst um eine Zahl mathematisch "umzudrehen" dann setze diese einfach in deinem Code um. Ich glaub aber nicht das es so eine Formel/Gleichung gibt.
Daher würde ich es einfach über Strings probieren!


----------



## emorej (15. Jun 2015)

Tarrew hat gesagt.:


> .



Danke schonmal für deine Antwort. Jedoch soll das Ganze ja bei Jeder eingegebenen Zahl funktionieren. Also müsste man dies irgendwie mit einer Schleife lösen. Dazu kommt noch, dass ich nicht weiß, wie ich einzelne Zahlen zu einer Zahl in eine Variabel speichern kann.

Danke schomal.

MfG


----------



## Tarrew (15. Jun 2015)

Das ganze lässt sich sehr leicht in einer Schleife umsetzen:


```
public static int reverseInt(int number){
		int reverse = 0;
		do{
		    reverse= //...
		    number /= 10;
		} while  (number > 0);
		System.out.println("Reversed:" + reverse);
		return reverse;
	}
```

Im Prinzip gehe ich genauso vor, wie schon im ersten Post beschrieben. Fehlt nur noch die eine Zuweisung, die du aber schnell rauskriegen solltest.


----------



## emorej (15. Jun 2015)

x=1
y=2
z=3

Wie kriege ich aus diesen 3 Variablen eine Variable mit u= 123 raus?



MfG


----------



## Tarrew (15. Jun 2015)

Zehnerpotenzen sagen dir was? 
 1*10² + 2*10¹ + 3*10^0 = 100 + 20 + 3 = 123.

 Aber die fehlende Zeile Code ist viel einfacher. Hat auch was mit Zehnerpotenzen zu tun. Du bräuchtest auf jeden Fall nicht mit x,y und z rumhantieren.


----------



## emorej (15. Jun 2015)

```
while(x>=0){
x=pN%10;

y=x*10[COLOR=#333333]²
[/COLOR]}
```

Ich habe nur ein Problem: Ich muss herausfinden, wieviele Zahlen die eingegebene Zahl enthält, dann könnte ich ja wissen, wieviel Mal 10 ich machen müsste.

MfG


----------



## Tarrew (15. Jun 2015)

Du rechnest einfach jedes Mal x 10. 

 Wenn die Zahl 5 Stellen hat, wird die Schleife ja auch so oft durchlaufen. Fehlt nur noch den modulo darauf zu addieren.


```
public static int reverseInt(int number){
			int reverse = 0;
			do{
			    reverse= reverse*10+(number%10);
			    number /= 10;
			} while  (number > 0);
			System.out.println("Reversed:" + reverse);
			return reverse;
		}
```


----------



## emorej (15. Jun 2015)

```
while(y>=0)
{
x=x+1;


y=pN%10;
}
```

Das Problem ist, dass pN ja immer gleich ist, somit bekommt man immer das gleiche Resultat. Aber ich will ja mit dem Modulo von pN weitermachen und nicht wieder und wieder den Wert von pN % 10 haben.

MfG


----------



## Tarrew (15. Jun 2015)

Ich muss gestehen, ich weiß nicht so ganz was du versuchst da zu tun. 
Am besten Mal einen kompletten Code posten? Aus dem Schnipsel ergibt sich mir nicht wirklich was du da versuchst. 
 Wofür das x=x+1 ?

 Der Code von mir sollte eigentlich lauffähig sein:


----------



## emorej (15. Jun 2015)

Das war ein Versuch, wollte den nicht mit reinschreiben. Das Problem ist, dass ich derzeit noch mit einem vereinfachten Programm schreibe, dass wir in der Schule benutzen und main, String und reverseInt sind fremd für mich. Kann ich dies ohne das Wissen nicht lösen? Habe nur While, For, Modulo zur Verfügung.

MfG


----------



## Tarrew (15. Jun 2015)

Welches Programm ist das denn? Dann könnte man mal gucken, was einem denn zur Verfügung steht.


----------



## emorej (15. Jun 2015)

Tarrew hat gesagt.:


> Welches Programm ist das denn? Dann könnte man mal gucken, was einem denn zur Verfügung steht.



-> :: UNIMOZER :: (Unimozer)

MfG


----------



## Tarrew (15. Jun 2015)

Weiß ja nicht wie ihr in der Schule das macht. Aber bei mir geht das so:


----------



## emorej (16. Jun 2015)

Tarrew hat gesagt.:


> Weiß ja nicht wie ihr in der Schule das macht. Aber bei mir geht das so:



Danke dir schonmal, habe nur noch eine Frage: Was tut das "do"?

EDIT. number /= 10 geteilt durch was?

MfG


----------



## Flown (16. Jun 2015)

Schon mal eine Suchmaschine danach gefragt?
do-while-Statements
/=


----------



## BK117 (16. Jun 2015)

Um es nochmal zu verdeutlichen. 
number /= 10; ist dir Kurzform für: number = number/10;

Genauso wie:
number = number +2; auch als number += 2; geschrieben werden könnte. 
Das gilt für alle Operatoren.

Und zu deiner do-while-Schleife:
Es gibt zwei Arten von while-Schleifen.
Die eine sieht so aus:

```
while(Bedingung true dann Schleife ausführen, wenn false dann weiter im Code){
     //alles was du machen möchtest
}
```
Diese überprüft zuerst die Bedingung, und führt dann den Code aus.
Und die do-while-Schleife, führt den Code, egal was für eine Bedingung da ist, erst einmal aus, und dann wird geschaut, ob die Bedingung stimmt, und die Schleife erneut ausgeführt werden soll. Und so weiter.
Also so:

```
do{
    //alles was du machen möchtest
} while(Bedingung die erst nach dem ersten Durchlauf der Schleife überprüft wird);
```
Somit wird bei der 2. Schleife zwangsläufig, bei egal was für einer Bedingung, der Code in der Schleife mindestens einmal ausgeführt, selbst wenn die Bedingung nicht stimmt. Das kann zwischendurch schonmal nützlich sein.  Mann muss immer mal schauen, was man lieber verwenden möchte. Manchmal ist das einer praktischer als dass andere, aber das hängt immer von der Situation ab.

Gruß BK


----------



## Tom299 (16. Jun 2015)

[Java]
	public static int reverseInt(Integer zahl) {
		String sAlteZahl = zahl.toString();
		String sNeueZahl = "";
		int iLength = sAlteZahl.length();
		for (int i=iLength-1;i>=0;i--) {
			sNeueZahl = sNeueZahl + sAlteZahl.charAt(i);
		}
		return new Integer(sNeueZahl);
	}
[/Java]


----------



## VfL_Freak (16. Jun 2015)

Moin,


emorej hat gesagt.:


> Ziel: Man tippt eine beliebige Zahl (Bsp.: 123) ein und ich würde dann gerne in eine Variabel 321 stehen haben.
> Also ein Palindrom.


mal so ganz nebenbei: das ist mitnichten ein Palindrom !!
Ein Palidrom ist eine Zeichenkette, die von vorn und von hinten gelesen dasselbe ergibt: bspw. "Rentner" !!

Gruß Klaus


----------



## Flown (16. Jun 2015)

Was ich hier sehe, einen int in einen String umzuwandeln und dann wieder zurück das schmerzt. Hinzu kommt dann einen Integer zu verwenden und dann noch Autoboxing zu bemühen.

Man braucht übrigens keine do-while Schleife. Ich bin auch kein Freund von Inputparameteränderungen.

```
public static int reverse(int n) {
	int result = 0;
	for (int j = n; j > 0; j /= 10) {
		result = result * 10 + j % 10;
	}
	return result;
}
```


----------



## emorej (16. Jun 2015)

Flown hat gesagt.:


> Was ich hier sehe, einen int in einen String umzuwandeln und dann wieder zurück das schmerzt. Hinzu kommt dann einen Integer zu verwenden und dann noch Autoboxing zu bemühen.
> 
> Man braucht übrigens keine do-while Schleife. Ich bin auch kein Freund von Inputparameteränderungen.
> 
> ...



Danke vielmals!

MfG


----------

