首页 > 解决方案 > Java程序在给定范围内查找回文数

问题描述

我正在尝试在给定范围内查找回文数。这是我的代码:

import java.util.Scanner;
import java.util.ArrayList;

public class PalindromeNums{
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);
        int start,end,rem,rev=0,temp;
        ArrayList <Integer> palindrome = new ArrayList<>();
        System.out.print("Start : ");
        start = input.nextInt();
        System.out.print("End : ");
        end = input.nextInt();

        temp = start;
        for(int i = start; i <= end; i++){

            while(temp != 0){
                rem = temp % 10;
                rev = rev * 10 + rem;
                temp = temp / 10;
            }

            System.out.println(rev);
            if(i == rev){
                palindrome.add(i);
            }
            temp++;
            rev = 0;
        }
        System.out.println(palindrome);

    }
}

当我运行代码时,它只为第一个整数提供正确的输出。它不适用于给定范围内的其他整数。对此问题有任何建议/解决方案吗?为什么它不起作用?

样本输出:

开始:33 结束:55 33 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [33]

标签: javapalindrome

解决方案


请试试这个

import java.util.Scanner;
import java.util.ArrayList;

public class PalindromeNums{
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);
        int start,end,rem,rev=0,temp;
        ArrayList <Integer> palindrome = new ArrayList<>();
        System.out.print("Start : ");
        start = input.nextInt();
        System.out.print("End : ");
        end = input.nextInt();

     // Picking Each Number Of That Range;
        for(int i = start; i <= end; i++){
            temp =i;
            // Checking whether Its Palindrome Or Not
            while(temp != 0){
                rem = temp % 10;
                rev = rev * 10 + rem;
                temp = temp / 10;
            }

            System.out.println(rev);
            if(i == rev){
                palindrome.add(i);
            }
            rev = 0;
        }
        System.out.println(palindrome);

    }
}

推荐阅读