• 校验身份证 是否是合法身份证


    身份证前17位系数。

     第1位 第2位 第3位 第4位 第5位 第6位 第7位 第8位 第9位 第10位 第11位 第12位 第13位 第14位 第15位 第16位 第17位
    7 9 10 5 8 4 2 1 6 3 7 9  10  5  8  4  2

    ( 身份证前17位数字 和 系数 相乘的结果相加 ) / 11 = 余数

    余数与身份证号码第18位对应关系如下。

     0 1 2 3 4 5 6 7 8 9
    1 0 X 9 8 7 6 5 4 3

    示例:

    例如:某男士的身份证号码是622924199605211012。

     1      //获取省份 、获取 出生日 、 获取性别
     2         // 前17位 系数
     3         int[] preCard17 = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
     4         // 余数与身份证第18位对应关系
     5         String[] card18 = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3"};
     6         //身份证 622924199605211012
     7         String cardId = "622924199605211012";
     8 
     9         String[] pre17 = cardId.substring(0, 17).split("");
    10         // 前17位与系数的乘积和
    11         int sum = 0;
    12         for (int i = 0; i < preCard17.length; i++) {
    13             sum += preCard17[i] * Integer.parseInt(pre17[i]);
    14         }
    15         // 求余数
    16         int seek = sum % 11;
    17         //检验
    18         if (cardId.substring(17).equals( card18[seek] )) {
    19             System.out.println(cardId + "是有效的身份证");
    20         } else {
    21             System.out.println(cardId + "无效身份证");
    22         }

    结果:

    622924199605211012无效身份证
  • 相关阅读:
    网页设计 【0834】
    Apache Commons Lang
    Arduino U8G2 OLED_SSD1306_Chart
    Arduino Adafruit_SSD1306的使用
    proteus pro 8.9 安装及汉化教程
    AD IC类元件模型的创建
    C/C++ 深入理解char * ,char ** ,char a[ ] ,char *a[] 的区别
    Arduino MLX90614
    Arduino uno mega2560
    C语言 堆和栈
  • 原文地址:https://www.cnblogs.com/oukele/p/10218357.html
Copyright © 2020-2023  润新知