package Runable_Test;
import java.math.BigInteger;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ID_JYM {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 详细请正则表达式参照:https://zhidao.baidu.com/question/493151729855271292.html
// 该正则表达式可确定到省份;
String reg_id = "(\\d{17}[0-9a-zA-Z])";
Pattern idNumPattern = Pattern.compile(reg_id);
Scanner sc = new Scanner(System.in);
System.out.println("输入18位身份证号:");
String id = sc.next();
Matcher idNumMatcher = idNumPattern.matcher(id);
if (idNumMatcher.matches()) {
int[] arr = new int[17];
// 身份证前17位
for (int i = 0; i < arr.length; i++) {
String id_ys = id.toString().substring(i, (i + 1));
arr[i] = Integer.parseInt(id_ys.toString());
System.out.print(arr[i] + "\t");
}
String str_jyw = id.substring((id.length() - 1));
// 身份证最后一位
System.out.println(str_jyw);
int id_count = arr[0] * 7 + arr[1] * 9 + arr[2] * 10 + arr[3] * 5 + arr[4] * 8 + arr[5] * 4 + arr[6] * 2
+ arr[7] * 1 + arr[8] * 6 + arr[9] * 3 + arr[10] * 7 + arr[11] * 9 + arr[12] * 10 + arr[13] * 5
+ arr[14] * 8 + arr[15] * 4 + arr[16] * 2;
int id_yusu = id_count % 11;
String jyw = null;
switch (id_yusu) {
case 0:
jyw = "1";
break;
case 1:
jyw = "0";
break;
case 2:
jyw = "X";
break;
case 3:
jyw = "9";
break;
case 4:
jyw = "8";
break;
case 5:
jyw = "7";
break;
case 6:
jyw = "6";
break;
case 7:
jyw = "5";
break;
case 8:
jyw = "4";
break;
case 9:
jyw = "3";
break;
case 10:
jyw = "2";
break;
}
System.out.println("");
System.out.println("最后一位校验码是:" + jyw);
// 忽略大小写的验证
if (jyw.equalsIgnoreCase(str_jyw)) {
System.out.println("校验完成,输入正确");
} else {
System.out.println("身份证号输入有误---1!!!");
}
} else {
System.out.println("身份证号输入有误---2!!!");
}
}
}
import java.math.BigInteger;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ID_JYM {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 详细请正则表达式参照:https://zhidao.baidu.com/question/493151729855271292.html
// 该正则表达式可确定到省份;
String reg_id = "(\\d{17}[0-9a-zA-Z])";
Pattern idNumPattern = Pattern.compile(reg_id);
Scanner sc = new Scanner(System.in);
System.out.println("输入18位身份证号:");
String id = sc.next();
Matcher idNumMatcher = idNumPattern.matcher(id);
if (idNumMatcher.matches()) {
int[] arr = new int[17];
// 身份证前17位
for (int i = 0; i < arr.length; i++) {
String id_ys = id.toString().substring(i, (i + 1));
arr[i] = Integer.parseInt(id_ys.toString());
System.out.print(arr[i] + "\t");
}
String str_jyw = id.substring((id.length() - 1));
// 身份证最后一位
System.out.println(str_jyw);
int id_count = arr[0] * 7 + arr[1] * 9 + arr[2] * 10 + arr[3] * 5 + arr[4] * 8 + arr[5] * 4 + arr[6] * 2
+ arr[7] * 1 + arr[8] * 6 + arr[9] * 3 + arr[10] * 7 + arr[11] * 9 + arr[12] * 10 + arr[13] * 5
+ arr[14] * 8 + arr[15] * 4 + arr[16] * 2;
int id_yusu = id_count % 11;
String jyw = null;
switch (id_yusu) {
case 0:
jyw = "1";
break;
case 1:
jyw = "0";
break;
case 2:
jyw = "X";
break;
case 3:
jyw = "9";
break;
case 4:
jyw = "8";
break;
case 5:
jyw = "7";
break;
case 6:
jyw = "6";
break;
case 7:
jyw = "5";
break;
case 8:
jyw = "4";
break;
case 9:
jyw = "3";
break;
case 10:
jyw = "2";
break;
}
System.out.println("");
System.out.println("最后一位校验码是:" + jyw);
// 忽略大小写的验证
if (jyw.equalsIgnoreCase(str_jyw)) {
System.out.println("校验完成,输入正确");
} else {
System.out.println("身份证号输入有误---1!!!");
}
} else {
System.out.println("身份证号输入有误---2!!!");
}
}
}