| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
package com.work.util; 网管bitscn_com
import java.io.BufferedReader;
import java.io.InputStreamReader;
网管网www.bitscn.com
/**
* @author cuiwx 网管联盟bitsCN_com
* wangmj整理优化。 网管u家u.bitscn@com
* 中国网管论坛bbs.bitsCN.com
*/ 网管bitscn_com
public class IdCard {
// 经过计算得出的指数数组,算法:2的n-1次方求和,除以11取模 中国网管联盟bitsCN.com
// 如:2的0次方除以11取模=1,2的1次方除以11取模=2,2的2次方除以11取模=4 网管bitscn_com
static int[] wi = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; 网管bitscn_com
// 校验位数组 网管bitscn_com
static char[] ai = { '1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2' };
public static void main(String args[]) {
// IdCard ic = new IdCard(); 网管u家u.bitscn@com
// System.currentTimeMillis();
try { 网管联盟bitsCN@com
boolean flag = false;
while (flag) { 中国网管论坛bbs.bitsCN.com
BufferedReader reader = new BufferedReader( 网管论坛bbs_bitsCN_com
new InputStreamReader(System.in));
System.out.println("15位身份证号:");
中国网管联盟bitsCN.com
String lowerid = reader.readLine();
网管联盟bitsCN@com
if (lowerid.equals("quit")) {
System.out.println("bye~~");
网管联盟bitsCN_com
break; 中国网管联盟bitsCN.com
} 网管u家u.bitscn@com
System.out.println("8位出生日期(19791216):"); 中国网管论坛bbs.bitsCN.com
String birth = reader.readLine(); 网管网www.bitscn.com
网管联盟bitsCN_com
System.out.println("请输入性别"); 网管u家u.bitscn@com
String sex = reader.readLine();
网管联盟bitsCN_com
System.out.println(checkIdNumber(lowerid, birth, sex));
网管u家u.bitsCN.com
System.out.println("18位号:" + upperIdNumber(lowerid, birth)); 中国网管论坛bbs.bitsCN.com
System.out.println(checkIdNumber(upperIdNumber(lowerid, birth), 中国网管论坛bbs.bitsCN.com
birth, sex)); 网管u家u.bitscn@com
} 中国网管联盟bitsCN.com
} catch (Exception e) {
网管联盟bitsCN_com
System.out.println(e);
}
网管网www_bitscn_com
}
网管bitscn_com
/**
* 根据15位身份证号和出生日期计算得出18位身份证号
网管下载dl.bitscn.com
* 网管网www_bitscn_com
* @param lowerId,15位身份证号
中国网管论坛bbs.bitsCN.com
* @param birthday出生日期,19810912
中国网管论坛bbs.bitsCN.com
* @return upperId,返回18位身份证号
*/ 网管网www_bitscn_com
public static String upperIdNumber(String lowerId, String birthday) {
网管下载dl.bitscn.com
if (lowerId.length() != 15) {
return "请录入15位身份证号码。";
网管u家u.bitscn@com
} else {
网管论坛bbs_bitsCN_com
return lowerId.substring(0, 6) + birthday.substring(0, 2)
+ lowerId.substring(6) + ai[checkBit(lowerId, birthday)]; 网管bitscn_com
}
网管联盟bitsCN@com
// return lowerId+ai[checkBit("372832198109126616")];
} 网管下载dl.bitscn.com
网管论坛bbs_bitsCN_com
/** 网管bitscn_com
* 根据15位身份证号和出生日期,计算校验位
网管论坛bbs_bitsCN_com
*
* @param lowerId,15位身份证号 网管u家u.bitscn@com
* @param birthday出生日期,19810912 网管bitscn_com
* @return mod,第18位校验位,用于从ai数组取数作为身份证号的最后一位,即ai[mod]
网管bitscn_com
*/ 网管u家u.bitsCN.com
public static int checkBit(String lowerId, String birthday) { 网管下载dl.bitscn.com
if (lowerId.length() != 15)// 请录入15位身份证号码
网管u家u.bitsCN.com
return -1; 网管联盟bitsCN_com
网管bitscn_com
lowerId = lowerId.substring(0, 6) + birthday.substring(0, 2) 网管u家u.bitsCN.com
+ lowerId.substring(6); 网管论坛bbs_bitsCN_com
int sum = 0;
网管u家u.bitscn@com
// 计算校验位,前 17位加权求和,然后除以11取模 网管联盟bitsCN@com
for (int i = 1; i < lowerId.length() + 1; i++) {
sum = sum + wi[i - 1] 网管网www_bitscn_com
* (Integer.parseInt(lowerId.substring(i - 1, i))); 网管u家u.bitsCN.com
}
// System.out.println("sum = " + sum); 网管网www_bitscn_com
// 计算校验位end
网管下载dl.bitscn.com
int mod = sum % 11;
网管网www_bitscn_com
return mod;
} 网管联盟bitsCN@com
中国网管联盟bitsCN.com
/**
网管u家u.bitscn@com
* 根据传入的18位身份证号,计算校验位
* 中国网管论坛bbs.bitsCN.com
* @param id,18位身份证号 网管bitscn_com
* @return mod,返回校验位,用于从ai数组取数作为身份证号的最后一位,即ai[mod] 网管bitscn_com
*/
public static int checkBit(String id) { 网管论坛bbs_bitsCN_com
String lowerId = id.substring(0, 17); 网管网www.bitscn.com
int sum = 0; 网管联盟bitsCN_com
for (int i = 1; i < lowerId.length() + 1; i++) {
中国网管论坛bbs.bitsCN.com
sum = sum + wi[i - 1] 网管u家u.bitscn@com
* (Integer.parseInt(lowerId.substring(i - 1, i))); 中国网管联盟bitsCN.com
}
中国网管联盟bitsCN.com
网管联盟bitsCN_com
int mod = sum % 11; 网管u家u.bitscn@com
网管联盟bitsCN_com
网管u家u.bitscn@com
中国网管论坛bbs.bitsCN.com
|
0
|
评论加载中…