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

Java数字反转需求:末尾0反转后替换为1,仅用while循环求修改方案

数字反转功能修正方案

你的原代码存在两处关键问题,同时缺少需求对应的处理逻辑,以下是具体的修正和补充说明:

原代码问题

  1. 反转逻辑错误:reversed = 0 * reversed + digit 会导致每次循环仅保留当前提取的数字位,正确的数字反转公式应为 reversed = reversed * 10 + digit,这样才能逐步构建反转后的数字。
  2. 未处理末尾0替换需求:原代码没有针对“输入数字末尾为0时,反转后对应位置替换为1”的逻辑。

需要添加/修改的代码内容

  1. 统计原数字末尾的0的数量:先通过一个while循环统计原数字末尾连续0的个数,准确识别需要替换的位置。
  2. 修正反转公式:替换错误的反转计算逻辑。
  3. 在反转循环中替换指定位置的0:当处理到原数字末尾的0时,将其替换为1,其他位置的0保持不变。

修正后的完整代码

import java.util.Scanner;

public class ReverseNumber {
    public static void main(String[] args) {
        Scanner kbd = new Scanner(System.in);
        int reversed = 0;
        System.out.println("Enter your number");
        int number = kbd.nextInt();
        int originalNum = number;
        int trailingZeroCount = 0;

        // 统计原数字末尾连续0的数量
        while (originalNum > 0 && originalNum % 10 == 0) {
            trailingZeroCount++;
            originalNum /= 10;
        }

        // 执行数字反转,同时处理末尾0替换为1的需求
        while (number > 0) {
            int digit = number % 10;
            // 仅处理原数字末尾的0,替换为1
            if (trailingZeroCount > 0) {
                digit = 1;
                trailingZeroCount--;
            }
            // 正确的反转计算逻辑
            reversed = reversed * 10 + digit;
            number /= 10;
        }

        // 循环结束后输出最终结果(原代码循环内输出会打印中间过程,移至此处更合理)
        System.out.println("Reversed number: " + reversed);
    }
}

测试示例

  • 输入120 → 输出121(原末尾0替换为1)
  • 输入500 → 输出115(原末尾两个0都替换为1)
  • 输入102 → 输出201(中间0不替换)
  • 输入7 → 输出7(无0,正常反转)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:01:16