You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现指定范围内回文数查找的代码编写问询

搞定指定区间回文数查找的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, temp;
        ArrayList<Integer> palindrome = new ArrayList<>();

        System.out.print("Start : ");
        start = input.nextInt();
        System.out.print("End : ");
        end = input.nextInt();

        // 处理起始值大于结束值的情况,让程序更健壮
        if (start > end) {
            int swap = start;
            start = end;
            end = swap;
        }

        // 遍历起始到结束区间的每一个数字
        for (int i = start; i <= end; i++) {
            temp = i;
            rev = 0; // 每次检查新数字前,一定要把反转数重置为0!
            // 核心:反转当前数字的每一位
            while (temp != 0) {
                rem = temp % 10; // 取当前数字的最后一位
                rev = rev * 10 + rem; // 把取到的数字拼到反转数的末尾
                temp = temp / 10; // 去掉当前数字的最后一位,继续循环
            }
            // 原数字和反转后的数字相等,就是回文数
            if (rev == i) {
                palindrome.add(i);
            }
        }

        // 输出结果
        System.out.println("\nPalindrome numbers between " + start + " and " + end + " are:");
        for (int num : palindrome) {
            System.out.print(num + " ");
        }
        input.close();
    }
}

几个关键细节要注意:

  • 重置反转数:每次循环到新数字时,必须把rev设为0,不然会带着上一个数字的反转结果继续计算,结果肯定出错!
  • 反转逻辑:while(temp != 0)这个循环是核心,通过取余、乘10拼接、整除去掉最后一位这三步,把数字完全反转过来。
  • 回文判断:反转后的数字和原数字相等,就说明这个数是回文数,直接加入集合即可。

额外优化说明:

我加了一段判断,如果用户输入的起始值大于结束值,程序会自动交换两者的位置,避免出现空输出的尴尬情况,让程序更友好。

内容的提问来源于stack exchange,提问作者Noman Prodhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:24:21