Zahlenpalindrom

Ich möchte ein Programm schreiben, dass eine Zahl einliest und danach den Boolean-Wert "true" ausgibt, falls diese Zahl ein Palindrom ist und "false" ausgibt, falls diese Zahl kein Palindrom ist.

Ich habe mir den folgenden Code überlegt
Code:
    static boolean isPalindrome(int number) {
        String numberString = number + "";
        int numberOfDigits = numberString.length();
       
        int i = numberOfDigits - 1;
        int j = 0;
       
        while (true) {
            if (numberString.charAt(i) != numberString.charAt(j)) {
                return false;
            }
   
            if (i - j <= 1) {
                return true;
            }   
   
            i--;
            j++;
        }
    }

Die Beispiele scheinen alle immer das richtige Ergebniss auszugeben, aber bei "00500" gibt er mir "false" aus. Wo liegt der Fehler in meinem Code?
 

X5-599

Top Contributor
Nicht ganz richtig, Wenn du die Methode tatsächlich so aufrufst: isPalindrome(00500), wird aus daraus die Dezimale Zahl 320. Wenn Zahlen mit einer vorangestellten 0 beginnen, wird eine Oktale Zahl angenommen. Hier: 500(okt) == 320(dez).
 
Nicht ganz richtig, Wenn du die Methode tatsächlich so aufrufst: isPalindrome(00500), wird aus daraus die Dezimale Zahl 320. Wenn Zahlen mit einer vorangestellten 0 beginnen, wird eine Oktale Zahl angenommen. Hier: 500(okt) == 320(dez).

Danke!
Das ist wirklich blöd mit den Oktalen Zahlen. Anstatt einer vorangestellten 0, wäre eine Methode oder ähnliches sicher besser gewesen.
 

Neue Themen


Oben