Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查给定范围之间的数字是否为回文的Java程序_Java_Loops_Range_Palindrome - Fatal编程技术网

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

检查给定范围之间的数字是否为回文的Java程序,java,loops,range,palindrome,Java,Loops,Range,Palindrome,所以我正试图编写这个java程序,它将检查并显示0到10000之间的所有回文数字。isAlindrome方法必须采用int 如果数字是回文,则返回布尔值true;如果数字不是回文,则返回布尔值false 这是到目前为止我的代码,但当我运行它时,它只打印一行1 我在最后添加的打印是调试和检查该方法是否有效,但在这种情况下不起作用。我还将numCount初始化为1,因为当num必须大于0时,我不知道如何使该方法工作。将numCount初始化为0将使程序跳过整个num>0部分 代码: import j

所以我正试图编写这个java程序,它将检查并显示0到10000之间的所有回文数字。isAlindrome方法必须采用int 如果数字是回文,则返回布尔值true;如果数字不是回文,则返回布尔值false

这是到目前为止我的代码,但当我运行它时,它只打印一行1 我在最后添加的打印是调试和检查该方法是否有效,但在这种情况下不起作用。我还将numCount初始化为1,因为当num必须大于0时,我不知道如何使该方法工作。将numCount初始化为0将使程序跳过整个num>0部分

代码:

import javax.swing.*;
导入java.text.*;
公共类回文检查
{
公共静态void main(字符串[]args)
{ 
//变数
int numCount=1;
最终int端=10000;
布尔回文;
//方法
回文=isPalindrome(numCount,END);
}//端干管
公共静态布尔值isPalindrome(int numCount,int END)
{ 
//局部变量
int num,num2=numCount,余数,reverseEnum;
布尔回文;
回文=假;
while(numCount 0)
{
余数=num%10;
num=num/10;
ReverseEnum=(ReverseEnum*10)+余数;
if(reverseEnum==num2)
{   
回文=真;
}
其他的
{
回文=假;
}
if(回文==true)
{
系统输出打印(“+ReverseEnum);
}
}//末端小回路
numCount++;
}//主回路末端
返回回文;
}//IsAlindrome方法结束
}//下课

将数字转换为StringBuilder对象,然后使用StringBuilder类中的reverse方法创建新的StringBuilder对象,然后比较两个StringBuilder对象的内容。

您可以使用此方法查找回文,而无需使用
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
 }

您的num2不会随着您的NUM计数而增加。虽然numCount在循环结束时递增,但num2始终为1,因为每次循环开始时,num2不会设置为等于numCount

if (reverseNum == num2)
因此,只有当ReverseEnum==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

while也许你应该考虑用字符串来表示回文。但是我想检查数字不是字符串< StringBuilder > /Cord>类有一个字符串反转的方法。它很容易使用。你看我是第一年计算机科学的学生,我还不熟悉那个CLSIS,不需要USI就可以做到这一点。ng类,因为我还不知道Java中的一切都在类中。但到目前为止,我只知道Math类,所以我不知道如何使用我们所说的StringBuilder类。我需要使用一个接受int的numDigit方法编写这个程序,并返回该int的位数和接受in的isAlindrome方法如果数字是回文,则返回布尔值true;如果不是,则返回布尔值false谢谢你能更具体地解释我的代码不工作的原因吗?我怎样才能使程序从0开始而不是从1开始?因为num必须大于0,所以程序进入循环我只需添加一个“if”行,因为它是代码下的特例。
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