我有一个困在while循环中的方法,我在方法本身中打印条件的布尔值,它最终的确是假的,但不会退出循环。
public static boolean isPalindrome(BigInteger num) {
BigInteger invertedNum = BigInteger.valueOf(0);
BigInteger auxNum = num;
while (auxNum.compareTo(BigInteger.valueOf(0)) != 0) {
invertedNum = invertedNum.multiply(BigInteger.valueOf(10)).add(auxNum.divide(BigInteger.valueOf(10)));
auxNum = auxNum.divide(BigInteger.valueOf(10));
System.out.println(auxNum.compareTo(BigInteger.valueOf(0)) != 0);
}
return invertedNum == num;
}
答案 0 :(得分:3)
我运行了您的代码,它运行正常; while循环退出。
您的代码中确实有2个错误:
.add(auxNum.divide)
通话中,我假设您希望使用mod
。==
进行比较。您必须使用.equals
(在while循环中,您可以使用.compareTo
正常工作,但是.equals
更具可读性,因为它可以正确表达您要完成的工作。最后在return
语句中与==进行比较。应用这两个修复程序,您的代码对于回文(十进制)数字正确返回true,否则返回false。