
本文讲解如何用取模(%)和整除(/)运算准确分离一个三位整数的个位、十位和百位数字,纠正常见误区(如 `(n % 10) / 10` 恒为 0),并提供可运行的 java 示例代码。
在 Java(及其他支持整数算术的语言)中,分离一个三位整数(如 472)的各位数字,本质是利用十进制位权特性:个位权重为 $10^0=1$,十位为 $10^1=10$,百位为 $10^2=100$。关键在于理解 %(取模)和 /(整除)的组合逻辑——它们不是可交换的操作,顺序至关重要。
✅ 正确分离逻辑:
- 个位(a):number % 10 → 直接取余,保留最末一位(如 472 % 10 = 2)。
- 百位(c):number / 100 → 整除抹去后两位(如 472 / 100 = 4,Java 中整数除法自动截断小数)。
- 十位(b):(number / 10) % 10 → 先 / 10 去掉个位(472 / 10 = 47),再 % 10 提取新末位(47 % 10 = 7)。
⚠️ 常见错误:int b = (number % 10) / 10;
原因:number % 10 结果恒在 [0, 9] 范围内,再整除 10 必得 0(如 2 / 10 = 0)。该表达式无法获取十位,纯属逻辑倒置。
✅ 完整可运行示例:
import java.util.Scanner;
public class DigitExtractor {
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
System.out.println("Input a three-digit number:");
int number = read.nextInt();
int a = number % 10; // 个位
int b = (number / 10) % 10; // 十位 ← 关键修正行
int c = number / 100; // 百位
System.out.println(c + " " + b + " " + a); // 输出格式:百位 十位 个位
}
}输入示例:472 → 输出:4 7 2
输入示例:105 → 输出:1 0 5(注意:0 是合法十位值,代码能正确处理)
? 扩展说明:
- 此方法严格依赖输入为三位正整数(100–999)。若需健壮性,应添加输入校验(如 if (number 999))。
- 若需分离更多位数(如四位数),可推广为:千位 = n / 1000,百位 = (n / 100) % 10,依此类推。
- 核心口诀:“先除后模”取高位,“先模后除”仅适用于个位。
掌握这一模式,不仅解决数字拆分问题,更为理解进制转换、密码学基础运算及算法题中的数位处理打下坚实基础。










