检查身份证是否合法

x33g5p2x  于2022-06-06 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(236)

一 代码

  1. package idcard;
  2. /**
  3. * @className: CheckIdCard
  4. * @description: 验证身份证是否合法
  5. * @date: 2022/6/1
  6. * @author: cakin
  7. */
  8. public class CheckIdCard {
  9. public static void main(String[] args) {
  10. // 身份证
  11. String idCard = "421121103208280092";
  12. char[] idArr = idCard.toCharArray();
  13. if (idArr.length != 18) {
  14. System.out.println("身份证号必须是18位");
  15. }
  16. // 校验因子
  17. int[] factors = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
  18. // 模除后的校验码
  19. String[] mods = new String[]{"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
  20. // 对身份证进行加权求和计算
  21. int sum = 0;
  22. for (int i = 0; i < idArr.length - 1; i++) {
  23. char item = idArr[i];
  24. int n = item - '0';
  25. sum += factors[i] * n;
  26. }
  27. // 求和数据对11取模
  28. int mod = sum % 11;
  29. // 取模后的数和身份证最后以为进行对比
  30. String last = mods[mod];
  31. String lastNumber = idArr[idArr.length - 1] + "";
  32. if (lastNumber.equals(last)) {
  33. System.out.println("身份证合法");
  34. } else {
  35. System.out.println("身份证: " + idCard + " 格式不合法!");
  36. }
  37. }
  38. }

二 测试

  1. 身份证: 421121103208280092 格式不合法!

相关文章