输入18位的身份证号码,要求首先验证身份证号码合法性(仅利用校验位验证),如果合法则输出性别和出生日期。说明:
(1)身份证号码的7~12位表示出生年月;第17位表示性别,奇数为男,偶数为女;最后一位为校验位
(2)校验算法:将前面的身份证号码17位数加权求和(系数分别7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2),然后除以11,根据余数找到对应的校验位(分别为1、0、X 、9、8、7、6、5、4、3、2),如果计算的校验位和输入的校验位一致说明身份证号码合法。比如身份证号码53010219200508011x,前17位加权求和:
(57)+(39)+(010)+(15)+(08)+(24)+(12)+(91)+(26)+(03)+(07)+(59)+(010)+(85)+(08)+(14)+(1*2=189
189%11 = 2
序号为2的校验位就是X,所以身份证号码合法。

package zt_text_id;
import java.util.Scanner;public class zt_text_idmain {public static void main(String[] args) {System.out.println("请输入你的身份证号:");Scanner scan = new Scanner(System.in);String iden = scan.next();idCard id = new idCard(iden);System.out.println("你的身份证号"+(id.isLegal()==1?"合法":"不合法"));if (id.isLegal()==1){System.out.println("你的出生年月是:"+id.year());System.out.println("性别:"+(id.sex()==1?"男":"女"));}}
}
package zt_text_id;public class idCard {private String id;private static final byte MALE = 1;private static final byte FAMALE = 0;/*** 构造函数初始化* @param id*/public idCard(String id){this.id = id;}/*** 检验身份证是否合法* @return 1-合法;0-不合法*/public int isLegal(){int a = 0;int sum = 0;char checkBit[]={'1','0','X','9','8','7','6','5','4','3','2'};int []add={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char []stringArr = id.toCharArray();for (int i=0;i<17;i++){sum +=add[i]*(stringArr[i]-'0');}if (stringArr[17]==checkBit[sum%11]){a=1;}return a;}/*** 判断性别* @return 1-男;0-女;-1-错误;*/public byte sex(){if (isLegal()==1){char []stringArr = id.toCharArray();if (stringArr[16]%2==0){return FAMALE;}else{return MALE;}}return -1;}/*** 输出年月日* @return 年月日的字符串比如:20171207*/public String year(){String num=null;if (isLegal()==1){num = id.substring(6,14);}return num;}
}

总结:编程主要的还是思路,思路清晰了写代码就容易,就比如本题,我们拿到的时候首先想输入一个身份证号,然后就要判断身份证号是否合法,等合法了我们才可以进行下一步。这样的话我们就需要一个判断身份证号是否合法的方法。当判断合法之后,我们就可以输出年月和性别了。输出年月和性别可以分别设置方法进行判断。
当然这里面存在一些bug,比如输入19个的身份证号,前18位正确,多数了一个数也会被认为正确的。

java实现验证身份证号是否合法相关推荐

  1. Java验证身份证号是否合法

    身份证作为居民的唯一标识.在很多系统中需要用户输入身份证号信息,今天我们就来编写一个方法验证身份证号的合法性. 首先我们来看看身份证号的编码规则: 前1-2位数字表示:所在省(直辖市.自治区)的代码: ...

  2. 验证身份证号是否合法

    一.身份证位数15或者18位 最后一位可以为字母 二.身份证前6位[ABCDEF]为行政区划数字代码(简称数字码): –15位身份证号码:第7.8位为出生年份(两位数),第9.10位为出生月份,第11 ...

  3. python判断身份证是否合法的函数_Python开发之身份证验证库id_validator验证身份证号合法性及根据身...

    上个星期,大佬分享了一个验证身份证号合法性的库:id_validator,没空去试着用一下看看,今天有点时间,来试着用下这个库. 1.首先,要安装这个库,windows+R键运行cmd,打开命令行窗口 ...

  4. 【SQLServer】验证身份证号第18位校验码是否合法

    目录 1.业务场景 2.知识前提 3.实现方案 4.测试 5.参考链接 1.业务场景 参考国家标准GB 11643-1999,居民身份证号组成:6位数字地址码+8位数字出生日期码+3位数字顺序码+1位 ...

  5. 判断身份证号是否合法;验证城市区号,生日

    判断身份证号是否合法 ; 验证城市区号 , 生日 直接上代码 /*** 判断身份证号是否合法* 验证城市区号;生日* Date:2018年12月29日 * @author D2yml**/ publi ...

  6. js进阶正则表达式15验证身份证号(|符号的使用:var reg=/^\d{17}[\d|X]$|^\d{15}$/)(str的方法substr)...

    js进阶正则表达式15验证身份证号(|符号的使用:var reg=/^\d{17}[\d|X]$|^\d{15}$/)(str的方法substr) 一.总结 1.|符号的使用:var reg=/^\d ...

  7. 判断身份证号是否合法

    -- ============================================= -- Description: <判断身份证号是否合法,返回结果对应如下:> -- -2: ...

  8. python之验证身份证号合法性的库:id_validator

    上个星期,大佬分享了一个验证身份证号合法性的库:id_validator,没空去试着用一下看看,今天有点时间,来试着用下这个库. 1.首先,要安装这个库,windows+R键运行cmd,打开命令行窗口 ...

  9. 今天写了个自定义函数验证身份证号是否符合规则

    大家好,我是老王.今天调了半天,报了各种错误,终于写好了这个验证身份证号的自定义函数,规则可以参考身份证号码的编排规则 CREATE OR REPLACE FUNCTION LAOWANG_CHECK ...

  10. 用python判断身份证号性别_验证身份证号的Python脚本

    引用 a[0], a[1], a[2], a[3], ..., a[16], a[17] 其中a[i]表示第i位数字,i=0,1,2,...,17,如果最后一位(校验位)是X,则a[17]=10 每一 ...

最新文章

  1. linux系统学习第八天-工程师技术
  2. python编程小游戏代码-Python小游戏之300行代码实现俄罗斯方块
  3. 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素
  4. [转载] Java-forEach增强for循环是值传递规则详解
  5. 操作系统之计算机系统概述:5、中断和异常
  6. 蒟蒻吃药计划-治疗系列 #round6 数据结构初步-指针|链表|结构体
  7. 授权码模式、Token登录认证
  8. 【面试题】华为20道大数据面试题整理
  9. HORAE深入思考及长久性论证
  10. 音乐app、app原型、音乐原型、云音乐、听歌、电台、本地音乐、点赞、收藏、歌单广场、动态、社区、评论、歌词、歌手、主播、视频、云村、下载、翻唱、歌曲播放、订阅、频道、引导页、登录注册、axure原型
  11. ESD防护选型思路(一)
  12. 统计多个渠道App下载量效果
  13. 企业网站建设需要多少钱?
  14. 实体嵌入(向量化):用深度学习处理结构化数据
  15. 编译优化之 - 向量化优化入门
  16. [转载]我爱我妻----让男人看一遍哭一遍的文章
  17. Linux shell脚本练习
  18. 840C - On the Bench (容斥 + DP)
  19. 互换性与测量技术基本
  20. oracle 8350262 严重:oui-67204,Oracle 10g EM Bug 8350262 on Windows Server 2003 x64-2

热门文章

  1. 网页测速 php,好用实用的站长测速工具网站大全
  2. python全栈开发工程师_Python Web全栈开发工程师修炼之路
  3. 数学建模的论文格式以及visio画图
  4. Proxmark3教程1:用PM3解密复制M1全加密门禁IC卡图文详细介绍
  5. 获取服务器的wsdl文件,vb.net根据wsdl文件生成WebService服务器端代码
  6. 解决Navicat激活、注册时候出现No All Pattern Found的问题
  7. ps2021神经ai滤镜无法使用,ps2021没法用神经元滤镜
  8. 30款免费3D建模软件,总有一款适合你!
  9. 适合新手画PCB线路板的四个软件 2021-10-14
  10. Alienware-17-R2 Ubuntu killer无线网卡