1、将前面的身份证号码17位数分别乘以不同的系数。
从第一位到第十七位的系数分别为: 7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。
其分别对应的最后一位身份证的号码为 1-0-X-9-8-7-6-5-4-3-2
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stu
// TODO 自动生成方法存根
System.out.print("请输入您的身份证号码:");
Scanner scanner=new Scanner(System.in);
String idcarnum=scanner.next();
System.out.println();
if (validatorIdcard(idcarnum)) {
System.out.println("身份证:"+idcarnum+"符合要求");
}else {
System.out.println("身份证:"+idcarnum+"不符合要求");
}
}
public static boolean validatorIdcard(String idCardNum) {
if (idCardNum.length()!=18) {
return false;
}
boolean result = false;// 余数标志结果
char[] idcard = idCardNum.toCharArray();
int total = 0;// 存放数字和系数相乘的结果相加
int[] seed = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};// 种子数组
for (int i = 0; i < idcard.length - 1; i++) {
total += seed[i] * (int) idcard[i];// 累加
}
int modresult = total % 11;// 获取余数
int[] mod = { 0,1,2,3,4,5,6,7,8,9,10 };// 余数匹配种子
for (int c : mod) {
if ( c == modresult) {// 如果余数在余数匹配种子里
result = true;
break;
}
}
if (result == false) {// 如果余数不在余数匹配种子,身份证号码不对
return false;// 返回假
} else {
char[] lastChar = { '1', '0', 'X', '9', '8', '7', '6', '5', '4',
'3', '2' };// 身份证尾数种子
for (int i = 0; i < lastChar.length; i++) {
if (lastChar[i] == idcard[idcard.length-1]) {// 如果身份证号码尾数在身份证尾数种子
return true;// 返回真
}
}
return false;// 返回假
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
身份证号验证 java 源码,1、将前面的身份证号码17位数分别乘以不同的系数。 从第一位到第十七位的系数分别为: 7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 2、将这17位数字和系数相乘的结果相加。 3、用加出来和除以11,看余数是多少? 4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。 其分别对应的最后一位身份证的号码为 1-0-X-9-8-7-6-5-4-3-2
资源推荐
资源详情
资源评论
收起资源包目录
身份验证.zip (1个子文件)
身份验证.txt 2KB
共 1 条
- 1
资源评论
- simula2014-07-29随便测试了几个,将身份证号码故意输错几位还是return true
maskingnju
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功