Java 回文数代码中循环的调试
此代码获取整数n并显示所有小于n的回文数。 但是for循环似乎不起作用;因为当我输入一个数字,除了0,1和负数,什么都不会发生。 我尝试过调试,但没有发现问题 样本输入:30 样本输出:123456789122Java 回文数代码中循环的调试,java,debugging,palindrome,Java,Debugging,Palindrome,此代码获取整数n并显示所有小于n的回文数。 但是for循环似乎不起作用;因为当我输入一个数字,除了0,1和负数,什么都不会发生。 我尝试过调试,但没有发现问题 样本输入:30 样本输出:123456789122 import java.util.Scanner; 公共类回文数{ 公共静态void main(字符串参数[]){ 扫描仪输入=新扫描仪(System.in); int n=input.nextInt(); 如果(n==0 | | n==1 | | n
import java.util.Scanner;
公共类回文数{
公共静态void main(字符串参数[]){
扫描仪输入=新扫描仪(System.in);
int n=input.nextInt();
如果(n==0 | | n==1 | | n<0)
System.out.println(“没有回文数字!”);
否则{
for(int num=1;num0){
//使用模数运算符去除最后一个数字
温度=数值%10;
//创建反向编号
reversedNum=reversedNum*10+温度;
num=num/10;
}
if(reversedNum==num)
系统输出打印项数(num);
}
}
}
}
您正在更改for循环中的num
变量。下次执行num
时,该值将更改(为0)。试着这样做:
for (int num = 1; num < n; num++) {
int reversedNum = 0;
int temp = 0;
int temp2 = num;
while (temp2 > 0) {
// use modulus operator to strip off the last digit
temp = temp2 % 10;
// create the reversed number
reversedNum = reversedNum * 10 + temp;
temp2 = temp2 / 10;
}
if (reversedNum == num)
System.out.println(num);
}
for(int num=1;num0){
//使用模数运算符去除最后一个数字
温度=温度2%10;
//创建反向编号
reversedNum=reversedNum*10+温度;
temp2=temp2/10;
}
if(reversedNum==num)
系统输出打印项数(num);
}
这样,您就可以使用一个临时变量来计算reversedNum,并且仍然为下一次循环迭代保留num的值。您正在更改for循环中的
num
变量。下次执行num
时,该值将更改(为0)。试着这样做:
for (int num = 1; num < n; num++) {
int reversedNum = 0;
int temp = 0;
int temp2 = num;
while (temp2 > 0) {
// use modulus operator to strip off the last digit
temp = temp2 % 10;
// create the reversed number
reversedNum = reversedNum * 10 + temp;
temp2 = temp2 / 10;
}
if (reversedNum == num)
System.out.println(num);
}
for(int num=1;num0){
//使用模数运算符去除最后一个数字
温度=温度2%10;
//创建反向编号
reversedNum=reversedNum*10+温度;
temp2=temp2/10;
}
if(reversedNum==num)
系统输出打印项数(num);
}
这样,您就可以使用一个临时变量来计算reversedNum,并且仍然为下一次循环迭代保留num的值。您运行到一个无限循环中:您在
for
循环中使用num
作为索引,并在循环内将其重置为0。使用不同的变量,它应该工作
for (int i = 1; i < n; i++) {
int num = i;
...
if (reversedNum == i)
System.out.println(i);
}
for(int i=1;i
您运行到一个无限循环中:您在for
循环中使用num
作为索引,并在循环内将其重置为0。使用不同的变量,它应该工作
for (int i = 1; i < n; i++) {
int num = i;
...
if (reversedNum == i)
System.out.println(i);
}
for(int i=1;i
您可以用更简洁的方式:
public static void main(final String args[]) {
final Scanner input = new Scanner(System.in);
final int max = input.nextInt();
if (max <= 0) {
System.out.println("There's no Palindrome Number!");
} else {
for (int i = 1; i < max; i++) {
if (isPalindrome(i)) {
System.out.println(i);
}
}
}
}
private static boolean isPalindrome(final int num) {
final String temp = "" + num;
return new StringBuilder(temp).reverse().toString().equals(temp);
}
publicstaticvoidmain(最终字符串参数[]){
最终扫描仪输入=新扫描仪(System.in);
final int max=input.nextInt();
如果(max,您可以用更简洁的方式:
public static void main(final String args[]) {
final Scanner input = new Scanner(System.in);
final int max = input.nextInt();
if (max <= 0) {
System.out.println("There's no Palindrome Number!");
} else {
for (int i = 1; i < max; i++) {
if (isPalindrome(i)) {
System.out.println(i);
}
}
}
}
private static boolean isPalindrome(final int num) {
final String temp = "" + num;
return new StringBuilder(temp).reverse().toString().equals(temp);
}
publicstaticvoidmain(最终字符串参数[]){
最终扫描仪输入=新扫描仪(System.in);
final int max=input.nextInt();
如果(max),我尝试不使用任何方法或String
。我尝试不使用任何方法或String
。