public static boolean isPalindrome(int number) {
int reverseNumber = 0;
int lastDigit = 0;
if (number < 0) {
number = number * -1;
}
while (number > 0) {
lastDigit = number % 10;
number = number / 10;
if (number == 0) {
reverseNumber += lastDigit;
}
else {
reverseNumber += lastDigit;
reverseNumber *= 10;
}
}
return reverseNumber == number;
}
这个方法应该返回真正的回文,但是它没有。
2条答案
按热度按时间mnowg1ta1#
输出错误,因为您使用了变量
number
在整个过程中。所以number=11
每次都会减少,最后与reverseNumber
,这是比较11 == 0
. 所以输出是假的。分配变量temp
比如,int temp = number
.}
1mrurvl12#
你在“破坏”原作
number
施工时reverseNumber
:所以在那之后
while
-循环,你的number
是零,比较reverseNumber == number
不像你想象的那样。总是这样false
除非你的倒数是零。可以使用新的局部变量来构建
reverseNumber
,在循环中对其进行修改,但仍使用原始number
对于最终比较: