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-09-01 14:02:30 发布