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