gpt4 book ai didi

java - 使用数字的位数打印一定范围内的所有回文数

转载 作者:行者123 更新时间:2023-12-01 06:11:30 26 4
gpt4 key购买 nike

所以我编写了我的回文程序,该程序应该打印该范围内的所有回文数,但它似乎只打印 0 到 9,这意味着它将所有其他数字评估为 false。我不明白为什么?

public class Palindrome 
{
public static void main(String [] args)
{
int number = 0;
final int END = 10000;

while (number <= END)
{
if (isPalindrome(number))
{
System.out.print(" " + number);
}

number++;
}
}// end of main method
public static boolean isPalindrome(int number)
{
//local variables
int counter = 0;
int numDigits = 0;
final int END = 10000;
boolean palindrome = false;


while (number <= 10000)
{
//formula for finding the number of digits in a number
numDigits = getNumDigits(number);

//special case if number = 0
if (numDigits == 1)
{
palindrome = true;
break;
}

if(counter < numDigits / 2)
{
if (((number / (int) Math.pow(10, counter)) % 10) != (number / (int) Math.pow(10, numDigits - counter - 1)))
{
palindrome = false;
counter++;

}
else
{
palindrome = true;
}

}

number++;


}// end of loop
return palindrome;

}//end of isPalindrome Method
public static int getNumDigits(int number)
{
//local variables

int numDigits = (int) (Math.log10(number) + 1);

if(number == 0)
{
numDigits = 1;
}

return numDigits;

}//end of getNumDigits method


}

最佳答案

我的第一个建议是记录各种方法的输出,以确保您得到正确的输出。使用 System.out.println() 可以帮助解决此问题,因为我发现您无权访问调试器。

另外,至于你的 isPalindrome() 函数。我不知道您是否有任何必须使用数学函数的限制,但您可以在那里做一些事情:

public static boolean isPalindrome(int number) {
String numString = number + "";
for(int i = 0; i < numString.length() / 2; i++){
if(numString.charAt(i) != numString.charAt(numString.length() - i){
return false;
}
}
return true;
}

这实际上是根据字符串末尾的相应字符检查数字的字符串表示形式中的每个字符。您可以将条件除以 2,因为在中间点之后您已经检查了字符的相等性。

警告,我可能会遇到一些差一的错误。我没有测试过。我只是想提供一些想法和起点。

祝你好运!

关于java - 使用数字的位数打印一定范围内的所有回文数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com