public static Boolean is18Card(String idCard18) {
//证件省份
HashMap<String, String> aCity = new HashMap<>();
aCity.put("11","北京");
aCity.put("12","天津");
aCity.put("13","河北");
aCity.put("14","山西");
aCity.put("15","内蒙古");
aCity.put("21","辽宁");
aCity.put("22","吉林");
aCity.put("23","黑龙江");
aCity.put("31","上海");
aCity.put("33","浙江");
aCity.put("34","安徽");

aCity.put("35","福建");
aCity.put("36","江西");
aCity.put("37","山东");
aCity.put("41","河南");
aCity.put("42","湖北");
aCity.put("43","湖南");
aCity.put("44","广东");
aCity.put("45","广西");
aCity.put("46","海南");
/* 50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外"*/

//出生日期
String year = idCard18.substring(6,10);
String month = idCard18.substring(10,12);
String day = idCard18.substring(12,14);
Date temp_date = new Date(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day) - 1);
// String temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));

//最后一位校验码
int sum = 0;
int[] weights = new int[17];
weights[0]=7;
weights[1]=9;
weights[2]=10;
weights[3]=5;
weights[4]=8;
weights[5]=4;
weights[6]=2;
weights[7]=1;
weights[8]=6;
weights[9]=3;
weights[10]=7;
weights[11]=9;
weights[12]=10;
weights[13]=5;
weights[14]=8;
weights[15]=4;
weights[16]=2;
String codes = "10X98765432";
String[] code = codes.split("");
String[] idCard18Split = idCard18.split("");
for (int i = 0; i < idCard18Split.length - 1; i++) {

sum += Integer.parseInt(idCard18Split[i]) * weights[i];
}
String last = code[sum % 11]; //计算出来的最后一位证件号码

String province = idCard18.substring(0, 2);
//校验前2位省份
if(aCity.get(idCard18.substring(0, 2))==null) {
System.out.println("证件省份代码错误");
}
//出生日期验证 暂未完成
else if(temp_date.getYear()!=parseFloat(year)
||temp_date.getMonth()!=parseFloat(month)-1
||temp_date.getDate()!=parseFloat(day) )
{
System.out.println("'证件出生日期错误");
}
//证件最后一位校验码验证
else if(idCard18Split[idCard18Split.length - 1] != last) {
System.out.println("'证件出生日期错误");
}
return null;
}

半成品 java 身份证校验的更多相关文章

  1. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式

    Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...

  2. java实现身份证校验

    原文来自:java教程网 题目:身份证校验   身份证校验   如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以!   因为有人的身份证最后一位是"X"   实 ...

  3. 转:java身份证格式强校验

    package com.dsh.zealandweb.utils; import java.util.HashSet; import java.util.regex.Pattern; import o ...

  4. Java实现18位身份证校验代码

    import java.util.Scanner; /** * 18位身份证校验 * @author [J.H] * */ public class Test { // 身份证校验 public st ...

  5. 篇二:JS身份证校验

    身份证校验 function identityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北&q ...

  6. Powerbuilder编写身份证校验码

    public function boolean of_calc_cardid_verifycode (string as_cardid, ref string as_verifycode); /* 计 ...

  7. 最严格的身份证校验(JavaScript版)

    在JavaWeb研发过程中为了获取有效的用户信息,校验其数据的有效性非常是必要,以下贴出在项目中用到的关于身份证的校验: <!DOCTYPE HTML PUBLIC "-//W3C// ...

  8. 身份证校验程序(下)- 零基础入门学习Delphi49

    身份证校验程序 让编程改变世界 Change the world by program [caption id="attachment_2699" align="alig ...

  9. 身份证校验程序(上)- 零基础入门学习Delphi48

    身份证校验程序 让编程改变世界 Change the world by program [caption id="attachment_2699" align="alig ...

  10. 完美实现身份证校验 js正则

    注意: 1.只针对18为身份证号码进行校验,现在15位的应该很少了, 2.不区分xX大小写, 3.出生年份1900-2099,每月的天数也进行相关验证(考虑的闰月的情况), 4.校验规则详见,这个写的 ...

随机推荐

  1. Linux 第十节( APACHE )

    Apache   基金会,软件 http 协议 httpd  软件包 vim /etc/httpd/conf/httpd.conf   //网站配置主文件 systemctl restart http ...

  2. 简单了解如何自己动手制作RPM包

    导读 RPM文件在Linux系统中的安装最为简便.以著名的图像处理软件XV为例,其RPM包xv-3.10a-13.i386.rpm可以在该程序的主页中下载取得. 我们介绍如何自己动手制作RPM包.0, ...

  3. QString的一些使用技巧

    简介 QString 字符串被每个GUI程序所使用,不仅是用户界面,还有数据结构. C++原生提供两种字符串: 传统的C风格以'\0'结尾的字符数组和std::string类.与这些不同,QStrin ...

  4. android控制台应用binder通讯

    在android root环境下,有一个后台服务server进程需要提供接口给控制台应用client调用,本来想用socket方式来做的,后台发现android有更高效的方式来实现.那就是binder ...

  5. 网页端微信小程序客服

    https://mpkf.weixin.qq.com/ 可以设置自动回复

  6. NTP Mode 6 检测漏洞【原理扫描】

    系统: AIX7 cd /etc cp ntp.conf ntp.conf.bak vi net.conf ## 在最后加上一行 restrict default notrust nomodify n ...

  7. ssl自动更新证书

    安装证书 yum install certbot 更新证书之前先开启80 443 端口 自动生成证书certbot certonly --standalone --agree-tos -n -d ww ...

  8. Linux系统root密码忘记修改

    重启Linux系统 到启动状态: 按任意键,进入GRUB菜单: 按字母e进入: 调整到上图,按字母e,进入 不进行删减,在后面输入" 1"(空格1),按回车,进入 或者将" ...

  9. drush .. drupal console

    "You can run both." They compliment each other, yet the final decision is yours. Especiall ...

  10. 回溯-1-N皇后(Backtracking-1-N Queens)

    #include <stdio.h> #define N 4 enum bool {TRUE, FALSE}; void print_Q(int *Q) { int i; for (i = ...