
本文讲解如何通过取模(%)和整数除法精准提取三位整数的百位、十位和个位数字,纠正常见误区(如 `(n % 10) / 10` 恒为 0),并提供可直接运行的 java 示例代码。
在处理用户输入的三位整数(如 472)并希望将其拆分为三个独立数字(4、7、2)时,关键在于理解整数除法与取模运算的数学含义:
- n % 10 总是返回个位数字(范围 0–9);
- n / 10(整数除法)会截断小数部分,等效于“去掉个位”(如 472 / 10 = 47);
- 因此,要获取十位数字,必须先去掉个位,再对结果取模 10:(n / 10) % 10。
原代码中 int b = (number % 10) / 10; 错误地先取了个位(如 472 % 10 = 2),再除以 10 得 0——这是整数除法的必然结果,无法得到十位。
✅ 正确逻辑如下(以 number = 472 为例):
- 个位(a):number % 10 → 472 % 10 = 2
- 十位(b):(number / 10) % 10 → (472 / 10) = 47,再 47 % 10 = 7
- 百位(c):number / 100 → 472 / 100 = 4(整数除法自动截断)
完整修正代码:
import java.util.Scanner;
public class DigitSeparator {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
System.out.println("Input the number (must be a 3-digit integer):");
int number = read.nextInt();
int a = number % 10; // 个位
int b = (number / 10) % 10; // 十位(关键修正!)
int c = number / 100; // 百位
System.out.println(c + " " + b + " " + a);
read.close();
}
}⚠️ 注意事项:
- 该方法仅适用于非负三位整数(100–999)。若输入小于 100(如 56),c 将为 0;若大于 999(如 1234),c 将为 12,不再代表百位。如需健壮处理,应添加输入校验或扩展为通用位数分离逻辑。
- 所有运算均依赖 Java 的向零截断整数除法特性,确保结果符合预期。
- 核心思想可推广:第 k 位(从右往左,个位为第 0 位)的通用公式为 (n / 10^k) % 10。
掌握这一组合技巧,你就能灵活解析任意整数的每一位数字。










