Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
JavaEine eingelesene Zahl rückwärts wieder ausgeben
Das geht eigentlich ganz simpel (zwar nicht als Zahl aber im Grunde ists ja dasselbe, denn ne Zahl kann man ja auch in nen String umwandeln und umgekehrt):
Code:
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Eingabe: ");
System.out.println(new StringBuilder(in.readLine()).reverse().toString());
} catch (IOException e) {}
das funktioniert so net wirklich oder muss ich noch was extriges beachten?
Ergänzung ()
Das spuckt der Compiler aus:
symbol : class InputStreamReader
location: class NumberPalindrome1
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
^
Ich glaube aber sowieso nicht, dass Java Zahlen einfach so umdrehen kann.
Zudem wäre es interessant, es selbst hinzubekommen, ohne auf eine vorgefertigte Klasse zuzugreifen.
Ich glaube aber sowieso nicht, dass Java Zahlen einfach so umdrehen kann.
Zudem wäre es interessant, es selbst hinzubekommen, ohne auf eine vorgefertigte Klasse zuzugreifen.
Naja das musst du schon gleich sagen. Du hattest nach der einfachsten Möglichkeit gesucht und das ist eben Obiges. Natürlich kann mans auch manuell machen aber eigtl. braucht man das Rad ja nicht neu erfinden. Ich hatte nur Standard-Javaklassen verwendet. Java ist auch eigentlich dafür gedacht, dass man diese nutzt und möglichst wenig auf primitive Datentypen zurückgreift.
Aber wenn dus so willst hier mal mit fester Zahl und Handarbeit:
Code:
int Zahl = 345678;
String str = String.valueOf(Zahl); // Integer in String konvertieren
char[] charArray = str.toCharArray();
int n = charArray.length - 1;
for (int j = (n-1) / 2; j >= 0; --j) {
char temp = charArray[j];
charArray[j] = charArray[n - j];
charArray[n - j] = temp;
}
int i = 0;
try{
i = Integer.parseInt(new String(charArray)); // CharArray nach String und dann in Integer konvertieren
} catch (NumberFormatException e){}
System.out.println(i);
Solltest du wissen, dass es ein positiver Integer ist, so kannst du auch mit ganzzahliger Division und Rest arbeiten.
Quasi letzte Stelle abknippsen (rest von mod 10), durch 10 teilen, dann in Schleife neue Zahl mal 10, dazuaddieren, wieder abknippsen etc. bis Zahl alle
(noch ein paar Spezialfälle abfangen und fertig)
Die oben schon genannte Lösung ist aber viel besser
also die Variante mit mod10 (%10) gefällt mir am besten. Allerdings weiss ich leider nicht wie ich
1. die while Schleife (while number .... ??) dafür gestalte, also welche Bedingung ich benötige
2. wie ich dann die einzelnen Ergebnisse aus der Mod Divison als ganze Integer - Zahl wieder weiter verarbeiten kann
Vllt. kann mir ja jemand nochmal explizit für das Problem der mod10 Divison helfen.
Danke!
Ergänzung ()
So, habe es jetzt soweit lösen können:
Code:
{
public static void main(String[] args)
{
int rest = 0;
int umkehr = 0;
int zahl = Integer.parseInt(args[0]);
for (int i = 0; zahl > 0 ; i++)
{
rest = zahl % 10;
zahl = zahl / 10;
umkehr = umkehr * 10 + rest;
System.out.print(rest);
}
boolean palindromeTrue = (zahl == rest);
if (palindromeTrue == true)
{
System.out.print("Die Zahl " + zahl + " ist ein Palindrom");
}
else
{
System.out.print("Die Zahl " + Integer.parseInt(args[0]) + " ist kein Palindrom");
}
}
}
aber:
Ich habe nach wie vor das Problem, dass ich ja mit den Teilern nacher noch nen Abgleich rest mit zahl machen muss. Nur wie speicher ich daweil die Inhalte der Ausgaben von teiler in java als Zahl?
Also gemeint ist das hier: boolean palindromeTrue = (zahl == rest);
Hierbei soll er aber den kompletten rest und nicht nur die letzte Ausgabe (was ja 0 ist) abgleichen.
int zahl = Integer.parseInt(args[0]);
int tmp = zahl, erg = 0;
while (tmp > 0){
erg = (erg * 10) + (tmp % 10);
tmp = tmp/10;
}
if (zahl == erg) System.out.print("Die Zahl " + zahl + " ist ein Palindrom");
else System.out.print("Die Zahl " + zahl + " ist kein Palindrom");
int zahl = Integer.parseInt(args[0]);
int tmp = zahl, erg = 0;
while (tmp > 0){
erg = (erg * 10) + (tmp % 10);
tmp = tmp/10;
}
if (zahl == erg) System.out.print("Die Zahl " + zahl + " ist ein Palindrom");
else System.out.print("Die Zahl " + zahl + " ist kein Palindrom");