请求修复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
相关产品推荐
相关产品推荐

