我正在尝试解决一个问题,你的代码应该确定一个给定的数字是否是回文,我不明白为什么它不工作。
(You我可以跳过这一步,只要阅读代码就可以了)我的想法是,我用整数的值创建一个字符串,然后用这个字符串的长度创建一个for循环,这个循环使用% 10来反转整数,并将其存储在一个单独的字符串中。然后,我会比较这两个字符串,以确定这个数字是否是回文
public static boolean isPalindrome(int x) {
String s = String.valueOf(x);
int count = s.length();
String palindrome = "";
for(int i = 0; i < count; i++){
palindrome += x % 10;
}
System.out.print(palindrome);
if(palindrome == s){
return true;
}
else{
return false;
}
}
问题是代码只返回false,当我添加print语句来检查反转的数字(String回文)是什么时,我得到了一个不同的数字。
例如,我使用121来测试它,在for循环之后,print语句输出111。
我并不是真的在寻找解决方案,我只是想了解它为什么会出现这种行为。提前感谢。
2条答案
按热度按时间wn9m85ua1#
由于
x
在该循环中(或者实际上在代码中的任何地方)都没有改变,所以每次执行都产生相同的结果,即x
的最低有效位。因此,
palindrome
具有相同数字的一些拷贝,并且几乎永远不会等于s
每次循环时,都需要将
x
除以10。mwngjboj2#
问题出在你的for循环上,每次循环迭代的时候你都要把
x
除以10在这个for循环中,因为不需要索引,所以没有初始化。实际上,你可以用while循环来代替for循环:
equals()
方法返回true
。*StringBuilder
比使用+=
运算符更好。*