import java.util.Scanner;
public class E201_06_04_身份证验证 {
public static void main(String[] args) {
System.out.println("请输入18位身份证号码(X大写):");
Scanner scan = new Scanner(System.in);
String id = scan.next();
System.out.printf("你的身份证号%s",isLegal(id)?"合法":"不合法");
if(isLegal(id)){
System.out.println("你的出身年月是:" + dateOfBirth(id));
System.out.println("你的性别是:" + sex(id));
}
}
/**
* 判断性别
* @param id 身份证号码
* @return "女":性别为女."男":性别为男
*/
private static String sex(String id) {
char[] strinigAll = id.toCharArray();
if(strinigAll[16]%2 == 0){
return "女";
}else {
return "男";
}
}
/**
* 返回出生日期
* @param id 身份证号
* @return birth:出生日期
*/
private static String dateOfBirth(String id) {
String birth;
birth = id.substring(6,14);
return birth;
}
/**
* 判断身份证是否合法
* @param id 身份证号码
* @return true:合法,false:不合法
*/
private static boolean isLegal(String id) {
int sum = 0;
char[] chekBit = {'1','0','X','9','8','7','6','5','4','3','2'};
int[] power = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char[] strinigAll = id.toCharArray();
for (int i = 0; i < 17; i++) {
sum += power[i]*(strinigAll[i] - '0');
}
if(strinigAll[17] == chekBit[sum%11]){
return true;
}
return false;
}
}