题目要求:输入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位加权求和:

(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2=189

189%11 = 2

序号为2的校验位就是X,所以身份证号码合法。

提示:字符串提取

实现代码:

import java.util.Scanner;public class E201_06_04_身份证验证 {public static void main(String[] args) {System.out.println("请输入18位身份证号码");Scanner scan =new Scanner(System.in);String number = scan.next();String sex;int year,month,day;if(Verification(number )){int num17 = Integer.parseInt(number.substring(16,17));if(num17%2==0){sex="女";}else{sex="男";}year=Integer.parseInt(number.substring(6,10));month=Integer.parseInt(number.substring(10,12));day=Integer.parseInt(number.substring(12,14));System.out.printf("性别为 %s,出生于%d年%d月%d日",sex,year,month,day);
        }else{System.out.printf("请输入合法的身份证号");}}/*** 验证身份证是否合法的函数* @param  number* @return*/private static boolean Verification(String number) {int [] ratio ={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//身份证前17位的系数char [] checkCode ={'1','0','X' ,'9','8','7','6','5','4','3','2'};//校验位int sum =0;//将前面的身份证号码17位数加权求和for(int i=0;i<17;i++){sum += Integer.parseInt(number.substring(i,i+1))*ratio[i];}char cal =checkCode[sum%11];//然后加权求和除以11.return cal==number.charAt(17);//根据余数找到对应的校验位}
}

【Java】身份证的验证相关推荐

  1. Java 身份证号验证

    二代身份证号码验证 扯淡区: 本博客主要内容是利用Java语言来验证身份证号码是否符合18位的二代身份证号规范. 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次 ...

  2. 新旧身份证合法性验证及相互转换算法(三):Java身份证号码验证及将15位转换18位

    package test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 身份证号码验证 * */ pub ...

  3. Java 身份证号码验证工具类

    package cn.hlq.test;import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...

  4. java身份证号码验证是否有效,校验是否成年

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  5. JAVA 身份证号码有效性验证

    本文转自:http://www.blogjava.net/zeroline/archive/2011/01/03/342227.html </pre><pre name=" ...

  6. java身份证验证代码IdcardUtils.java分享

    原文:java身份证验证代码IdcardUtils.java分享 源代码下载地址:http://www.zuidaima.com/share/1843444783778816.htm import j ...

  7. 18位身份证验证(Java)加入身份证输入验证是否满足18位代码(修订稿)

    package day20181016; /** * 身份证的验证 34052419800101001X * */ import java.util.Scanner; public class Zuo ...

  8. java对台湾同胞身份证号码验证

    package com.yt.eos.common.enumclass;import org.apache.commons.lang3.StringUtils;/*** 台湾同胞身份证号码验证* @a ...

  9. java实现身份证有效性验证

    public class ValidateIdentityCard {     /**      * 功能:身份证的有效验证<br>      * <br>      *    ...

最新文章

  1. golang切片传参
  2. 爬虫实战:要不是热爱学习,谁会爬小姐姐。分析Ajax来爬取今日头条街拍美图(python)
  3. python多态_Python基础入门18节-第十六节 面向对象如何理解多态
  4. 在DOS环境下编译及运行java程序教程
  5. Linux下如何挂载FAT32格式USB设备
  6. mysql的limit、order by和group by的用法
  7. Vim安装YouCompleteMe自动补全插件
  8. 使用CSS在文字前面加上图标。
  9. 【Zend Studio】10.6.0版本设置默认编码为UTF-8
  10. spoolqa果然是病毒!
  11. catalina.log localhost.log localhost_access_log.txt manager.log tomcat-stdout.log 文件占用过大,处理方式
  12. 最长递增子序列O(nlogn)和O(n2)
  13. 日本东京市区坐车到成田机场
  14. 企业OA管理系统需具备哪些功能?
  15. shp文件的可视化与编辑
  16. 微服务网关soul搭建
  17. 量子计算成区块链的达摩克利斯之剑,Hcash却选择装剑入鞘
  18. 多疗程40Hz tACS对阿尔茨海默病患者海马灌注的影响
  19. 【汇正财经】什么是复盘?
  20. 职场女性备孕如何调整

热门文章

  1. Vim nerdcommenter 插件
  2. Requests 入门
  3. sprintf函数实现_从Go结构成员的升格到面向对象类的实现
  4. 重磅:服务器基础知识全解终极版(145页PPT)
  5. Linux学习总结(61)——Ansible 快速入门学习
  6. 消息中间件学习总结(17)——MQ与RPC的区别和关联
  7. 全国计算机一级试题重难点,全国计算机等级考试一级MS选择题(重难点)部分.doc...
  8. 50.Nginx负载均衡 ssl原理 密钥对 配置ssl
  9. 5G标准化加速 需应对测试场景复杂性
  10. Java 学习之反射机制“解刨”分解类,并获取内容!