关于18位身份证号码最后一位计算(Java实现)

现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个)。也就是说,国内不存在前17位相同而第18位不同的身份证号码。(第18位)作为尾号的校验码,是由号码编制单位按统一的公式计算出来的。

计算方式如下(截图截自百度百科)【https://baike.baidu.com/item/%E5%B1%85%E6%B0%91%E8%BA%AB%E4%BB%BD%E8%AF%81%E5%8F%B7%E7%A0%81/3400358?fr=aladdin】

用Java代码实现如下:

import java.util.Scanner;public class Main {public static void main(String[] args) {int[] IDnums = new int[17];int[] coe = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};  //1-17位对应的系数Scanner sc = new Scanner(System.in);System.out.println("请输入身份证的前17位数字:");String inputID = sc.nextLine();System.out.println("完整的身份证号码为:");for(int i=0;i<inputID.length();i++){IDnums[i] = inputID.charAt(i)-'0';System.out.print(IDnums[i]);}int sum = getSum(IDnums, coe);int last = getLastNum(sum);if(last == 10){System.out.println("X");}else{System.out.println(last);}}public static int getSum(int IDnums[],int coe[]){int sum = 0;for(int i=0;i<17;i++){sum += IDnums[i]*coe[i];}return sum;}public static int getLastNum(int num){num = num%11;switch(num){case 0:num = 1;break;case 1:num = 0;break;case 2:num = 10;break;case 3:num = 9;break;case 4:num = 8;break;case 5:num = 7;break;case 6:num = 6;break;case 7:num = 5;break;case 8:num = 4;break;case 9:num = 3;break;case 10:num = 2;break;}return num;}
}

关于18位身份证号码最后一位计算(Java实现)相关推荐

  1. 18位身份证号码最后一位校验码的计算方法

    介绍18位身份证号码最后一位校验码的计算方法 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. ...

  2. 18位身份证号码最后一位校验

    1 package com.jdk7.chapter5; 2 3 /** 4 * 仅能校验15位或18位身份证号的校验码 5 * @author Administrator 6 * 7 */ 8 pu ...

  3. 15位和18位身份证号码的结构介绍

    身份证号码编码方法 要进行身份证号码的验证,首先要了解身份证号码的编码规则.我国身份证号码多由若干位数字或者数字与字母混合组成.早期身份证由15位数字构成,这主要是在1980年以前发放的身份证,后来考 ...

  4. excel表格中18位身份证号码如何转换成出生日期

    1.获取出生日期,如果Excel表上,如果A1为身份证号码. =IF(LEN(A1)=15,MID(A1,7,2)&"-"&MID(A1,9,2)&&quo ...

  5. 【转载】 身份证号码校验(15位和18位都可以)

    转载自: 开源中国社区    面向对象的15位.18位中国大陆身份证号码解析.验证工具 import java.text.ParseException; import java.text.Simple ...

  6. 15/18位身份证号码验证的正则表达式总结(详细版)

    前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...

  7. java代码实现15位身份证号码升级到18位

    转载网址   点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...

  8. 自动转换15位身份证号码位18位

     功能:将15的身份证号升为18位(根据GB 11643-1999)  参数:原来的号码(15位)  返回:升位后的18位号码  用法:=IDCODE(a1)  (假设A1放的是原15位号码) 关于身 ...

  9. 18位身份证号码规则及js验证

    2019独角兽企业重金招聘Python工程师标准>>> 一.中国居民身份证号码规则 18位身份证号码编码规则:根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份 ...

最新文章

  1. 由于不知线程池的bug,某Java程序员叕被祭天
  2. linux查看CPU利用率与负载,Linux CPU负载利用率统计
  3. ppct各代表什么_开关背面L、L1、L2各代表什么?火线,零线,地线怎样接?
  4. python核心数据类型_Python核心数据类型—元组
  5. pagefile.sys巨型文件在windows10下的尺寸调整
  6. python按列输出字符_如何根据条件在Pandas中构建新列(新列应输出字符串)
  7. 全球权威MLPerf基准测试再发榜,浪潮AI服务器创18项AI性能纪录
  8. 一款JS+CSS实现的无缝平滑图片滚动代码
  9. linux打开文件vi,在Linux中使用vi打开文件时如何显示行号,及跳转到指定行
  10. VB中DoEvents的注意事项
  11. python打印所有的水仙花数_python使用循环打印所有三位数水仙花数的实例
  12. Spring基础精华知识点
  13. 2021年焊工作业压力焊考试题库
  14. CocosCreator中TiledMap简单使用
  15. 【黑马Java笔记+踩坑汇总】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城
  16. shenyu单机部署和整合springcloud(手动和注解自动配置),nacos微服务网关
  17. win10c语言乱码修复方法,大神详解win10系统记事本中文变乱码的处理方案
  18. 苹果换原装电池_苹果手机换电池客户必看!苹果原装电池科普鉴别!
  19. 操作系统-文件读写过程
  20. java压缩文件夹并加密

热门文章

  1. virtualBox 虚拟机安装Windows7系统
  2. 探索学习:网红容器引擎Docker
  3. 硬盘安装ubuntu 14.04 LTS
  4. 【机器学习】代价函数,损失函数,目标函数区别
  5. httpclient Accept-Encoding 乱码
  6. linux如何查看哪个串口是真实串口,哪个串口
  7. vm虚拟机下ubuntu 联网方式
  8. 匿名内部类的定义格式
  9. Java 移位运算符 >>、<< 、>>是怎样进行运算的?
  10. 差动变压器测位移实验 原理及结论