public void test() {
String id = "610114190210092028";
char[] idArr = id.toCharArray();
if (idArr.length != 18) {
System.out.println("身份证必须为18位!");
return;
}
// 校验因子
int[] factors = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
// 模除后的校验码
String[] mods = new String[]{"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
// 对身份证进行加权求和计算
int sum = 0;
for (int i = 0; i < idArr.length - 1; i++) {
char item = idArr[i];
int n = item - '0';
sum += factors[i] * n;
}
// 求和数据对11取模
int mod = sum % 11;
// 取模后的数和身份证最后以为进行对比
String last = mods[mod];
String lastNumber = idArr[idArr.length - 1] + "";
if (lastNumber.equals(last)) {
System.out.println("身份证: " + id + " 合法!");
} else {
System.out.println("身份证: " + id + " 不合法!");
}
}
java校验身份证是否合法
最新推荐文章于 2023-12-06 17:58:27 发布
该代码段用于验证输入的身份证号码是否合法。它首先检查身份证长度,然后通过加权求和及模运算校验身份证的最后一位。如果身份证号码符合18位长度且校验码正确,则判断为合法。
847

被折叠的 条评论
为什么被折叠?



