package idcard;
/**
* @className: CheckIdCard
* @description: 验证身份证是否合法
* @date: 2022/6/1
* @author: cakin
*/
public class CheckIdCard {
public static void main(String[] args) {
// 身份证
String idCard = "421121103208280092";
char[] idArr = idCard.toCharArray();
if (idArr.length != 18) {
System.out.println("身份证号必须是18位");
}
// 校验因子
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("身份证合法");
} else {
System.out.println("身份证: " + idCard + " 格式不合法!");
}
}
}
身份证: 421121103208280092 格式不合法!
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/chengqiuming/article/details/125083675
内容来源于网络,如有侵权,请联系作者删除!