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

请求修复Java代码:实现输入整数后按位添加空格分隔

修复Java整数数字分隔输出的问题

需求:输入一个整数,输出结果为每个数字间用空格分隔(如输入123输出1 2 3)。

原代码存在的问题

原代码的逻辑错误在于:

  • 循环中打印的是每次除以10后的整数值(比如输入123会打印12),而非单个数字
  • 输出顺序混乱,且完全遗漏了最后一位数字
  • 循环仅处理了高位到倒数第二位,没有覆盖所有数字

修复方案

方案1:字符串转换法(简洁直观)

把整数转为字符串后,逐个遍历字符打印,最后一位不加多余空格:

import java.util.Scanner;

public class Digits {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter an integer: ");
        int num = input.nextInt();
        
        String numStr = String.valueOf(num);
        for (int i = 0; i < numStr.length(); i++) {
            System.out.print(numStr.charAt(i));
            // 避免末尾出现多余空格
            if (i != numStr.length() - 1) {
                System.out.print(" ");
            }
        }
        
        input.close();
    }
}

方案2:数学方法(不依赖字符串,贴合原代码思路)

先统计数字位数,再通过10的幂次逐个提取高位数字:

import java.util.Scanner;

public class Digits {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter an integer: ");
        int num = input.nextInt();
        int temp = num;
        int count = 1;

        // 统计数字的总位数
        while (temp >= 10) {
            count++;
            temp = temp / 10;
        }

        // 计算最高位的除数(例如3位数对应100)
        int divisor = (int) Math.pow(10, count - 1);
        temp = num;

        // 逐个提取并打印每个数字
        while (divisor > 0) {
            int digit = temp / divisor;
            System.out.print(digit);
            // 最后一位不加空格
            if (divisor > 1) {
                System.out.print(" ");
            }
            temp = temp % divisor;
            divisor /= 10;
        }
        
        input.close();
    }
}

测试验证

输入123会输出1 2 3,输入3426会输出3 4 2 6,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:15:36