java身份证号码校验代码
时间: 2025-02-05 08:15:59 浏览: 78
在Java中,校验身份证号码通常需要检查其长度、数字位数以及校验码是否符合规则。以下是一个简单的Java方法,用于验证中国大陆居民身份证号码:
```java
public class IDCardValidator {
private static final String[] checkCodeTable = {
"10X", "97X", "96X", "95X", "94X", "93X", "92X", "91X",
"8X", "7X", "6X", "5X", "4X", "3X", "2X", "101", "100", "99X", "98X",
"971", "962", "953", "944", "935", "926", "917", "8X0", "8X1", "8X2", "8X3",
"8X4", "8X5", "8X6", "8X7", "8X8", "8X9", "7X2", "7X3", "7X4", "7X5",
"7X6", "7X7", "7X8", "7X9", "6X1", "6X0", "5X1", "5X0", "4X1", "4X0",
"3X1", "3X0", "2X1", "2X0", "10X", "101", "100", "99X", "98X", "971",
"962", "953", "944", "935", "926", "917", "8X1", "8X0", "7X9", "7X8",
"7X7", "7X6", "7X5", "7X4", "7X3", "7X2", "6X3", "6X2", "6X1", "6X0",
"5X3", "5X2", "5X1", "5X0", "4X3", "4X2", "4X1", "4X0", "3X3", "3X2",
"3X1", "3X0", "2X3", "2X2", "2X1", "2X0"
};
public boolean validateIDCard(String id) {
if (id == null || id.length() != 18) {
return false;
}
// 检查前17位数字是否都是数字
for (int i = 0; i < 17; i++) {
char c = id.charAt(i);
if (!Character.isDigit(c)) {
return false;
}
}
// 验证第18位校验码
int sum = 0;
for (int i = 0; i <= 16; i++) {
int factor = i + 1;
int digit = Character.getNumericValue(id.charAt(i));
if (i % 2 == 0) { // 偶数位置加权因子为奇数
sum += factor * digit;
} else { // 奇数位置加权因子为偶数
sum += factor * digit * 2;
}
}
int remainder = sum % 11;
String checkCode = checkCodeTable[remainder];
return id.charAt(17).equals(checkCode.charAt(0)); // 对比第18位字符是否匹配
}
阅读全文
相关推荐


















