Java 回文数代码中循环的调试

Java 回文数代码中循环的调试,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

此代码获取整数n并显示所有小于n的回文数。 但是for循环似乎不起作用;因为当我输入一个数字,除了0,1和负数,什么都不会发生。 我尝试过调试,但没有发现问题

样本输入:30

样本输出:123456789122

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