【Java】身份证的验证
题目要求:输入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】身份证的验证相关推荐
- Java 身份证号验证
二代身份证号码验证 扯淡区: 本博客主要内容是利用Java语言来验证身份证号码是否符合18位的二代身份证号规范. 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次 ...
- 新旧身份证合法性验证及相互转换算法(三):Java身份证号码验证及将15位转换18位
package test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 身份证号码验证 * */ pub ...
- Java 身份证号码验证工具类
package cn.hlq.test;import java.text.ParseException; import java.text.SimpleDateFormat; import java. ...
- java身份证号码验证是否有效,校验是否成年
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- JAVA 身份证号码有效性验证
本文转自:http://www.blogjava.net/zeroline/archive/2011/01/03/342227.html </pre><pre name=" ...
- java身份证验证代码IdcardUtils.java分享
原文:java身份证验证代码IdcardUtils.java分享 源代码下载地址:http://www.zuidaima.com/share/1843444783778816.htm import j ...
- 18位身份证验证(Java)加入身份证输入验证是否满足18位代码(修订稿)
package day20181016; /** * 身份证的验证 34052419800101001X * */ import java.util.Scanner; public class Zuo ...
- java对台湾同胞身份证号码验证
package com.yt.eos.common.enumclass;import org.apache.commons.lang3.StringUtils;/*** 台湾同胞身份证号码验证* @a ...
- java实现身份证有效性验证
public class ValidateIdentityCard { /** * 功能:身份证的有效验证<br> * <br> * ...
最新文章
- golang切片传参
- 爬虫实战:要不是热爱学习,谁会爬小姐姐。分析Ajax来爬取今日头条街拍美图(python)
- python多态_Python基础入门18节-第十六节 面向对象如何理解多态
- 在DOS环境下编译及运行java程序教程
- Linux下如何挂载FAT32格式USB设备
- mysql的limit、order by和group by的用法
- Vim安装YouCompleteMe自动补全插件
- 使用CSS在文字前面加上图标。
- 【Zend Studio】10.6.0版本设置默认编码为UTF-8
- spoolqa果然是病毒!
- catalina.log localhost.log localhost_access_log.txt manager.log tomcat-stdout.log 文件占用过大,处理方式
- 最长递增子序列O(nlogn)和O(n2)
- 日本东京市区坐车到成田机场
- 企业OA管理系统需具备哪些功能?
- shp文件的可视化与编辑
- 微服务网关soul搭建
- 量子计算成区块链的达摩克利斯之剑,Hcash却选择装剑入鞘
- 多疗程40Hz tACS对阿尔茨海默病患者海马灌注的影响
- 【汇正财经】什么是复盘?
- 职场女性备孕如何调整
热门文章
- Vim nerdcommenter 插件
- Requests 入门
- sprintf函数实现_从Go结构成员的升格到面向对象类的实现
- 重磅:服务器基础知识全解终极版(145页PPT)
- Linux学习总结(61)——Ansible 快速入门学习
- 消息中间件学习总结(17)——MQ与RPC的区别和关联
- 全国计算机一级试题重难点,全国计算机等级考试一级MS选择题(重难点)部分.doc...
- 50.Nginx负载均衡 ssl原理 密钥对 配置ssl
- 5G标准化加速 需应对测试场景复杂性
- Java 学习之反射机制“解刨”分解类,并获取内容!