所以我正在尝试编写这个java程序,它将检查并显示0到10000之间的所有回文数。方法isPalindrome必须采用int 数字并返回一个布尔值如果数字是回文,则返回true;如果不是回文,则返回false。
到目前为止,这是我的代码,但是当我运行它时,它只打印一行1 我最后添加的打印是调试并检查方法是否有效,但在这种情况下它没有。我还将numCount初始化为1,因为当num必须大于0时,我无法弄清楚如何使方法工作。将numCount初始化为0会使程序跳过整个数字> 0部分。
代码:
import javax.swing.*;
import java.text.*;
public class PalindromeCheck
{
public static void main(String [] args)
{
//variables
int numCount = 1;
final int END = 10000;
boolean palindrome;
//methods
palindrome = isPalindrome(numCount, END);
}//end main
public static boolean isPalindrome(int numCount, int END)
{
//local variables
int num, num2 = numCount, remainder, reverseNum;
boolean palindrome;
palindrome = false;
while (numCount <= END)
{
num = numCount;
remainder = 0;
reverseNum = 0;
while (num > 0)
{
remainder = num % 10;
num = num / 10;
reverseNum = (reverseNum * 10) + remainder;
if (reverseNum == num2)
{
palindrome = true;
}
else
{
palindrome = false;
}
if(palindrome == true)
{
System.out.print(" " + reverseNum);
}
}//end Minor Loop
numCount++;
}//end of Major Loop
return palindrome;
}//end of method isPalindrome
}//end of class
答案 0 :(得分:1)
您可以使用此方法查找回文物,而无需使用StringBuilder
public boolean isPalindrome(int number){
//number=12321
int num = number;
//reversing number
int reverse=0,rmd;
while(number > 0)
{
rmd = number % 10;
reverse = reverse * 10 + rmd;
number = number / 10;
}
if(reverse == num)
//true
else
//false
}
答案 1 :(得分:0)
将数字转换为StringBuilder对象,然后使用StringBuilder类中的reverse方法创建新的StringBuilder对象,然后比较两个StringBuilder对象的内容。
答案 2 :(得分:0)
您的num2不会因为您的numCount而增加。虽然numCount在循环结束时递增,但num2始终为1,因为每次循环开始时num2都不会设置为等于numCount。
if (reverseNum == num2)
所以只有当reverseNum == 1时才会出现这种情况 在代码中添加一行,它应该可以正常工作
while (numCount <= END)
{
if (numCount == 0) // special case for 0
{
System.out.print("0");
numCount++;
continue;
}
num = numCount;
num2 = numCount; // <- add this line
// your original code here
}//end of Major Loop