检查给定范围之间的数字是否为回文的Java程序

时间:2015-11-16 01:26:34

标签: java loops range palindrome

所以我正在尝试编写这个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

3 个答案:

答案 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