您的位置:首页 > 编程语言 > Java开发

身份证号码校验算法 java实现

2015-11-22 21:15 429 查看
import java.util.Scanner;

public class CheckoutID {

int[] weight = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; // 十七位数字本体码权重
char[] validate = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' }; // mod11,对应校验码字符值

// 得到校验码
public char getCheckoutCode(String Idnumber17) {
int sum = 0; // wi*Ai和
int mod = 0; // 进行模11运算
try {
for (int i = 0; i < 17; i++) {
sum += Integer.parseInt(String.valueOf(Idnumber17.charAt(i)))
* weight[i];
}
} catch (Exception e) {
return 'a';
}
mod = sum % 11;// 进行模11运算
return validate[mod];// 返回校验码
}

public static void main(String[] args) {
CheckoutID cid = new CheckoutID();
String idNumber = "";
Scanner sc = new Scanner(System.in);
System.out.println("请输入要校验的身份证号:");
do {
idNumber = sc.nextLine();
if (idNumber.length() != 18) {
System.out.println("长度不合法请重新输入");
idNumber = "";
}
} while (idNumber.equals(""));
String id17 = idNumber.substring(0,17);
char id1 = idNumber.charAt(17);
if(cid.getCheckoutCode(id17) == id1) {
System.out.println("身份证号正确");
String areaCode = idNumber.substring(0,6);
System.out.println("地区码:" + areaCode);
String birthday = idNumber.substring(6,14);
System.out.println("生日:" + birthday);
int sexCode = Integer.parseInt(idNumber.substring(14,17));
if(sexCode%2 != 0) {
System.out.println("性别码:" + sexCode + " 性别:男");
} else {
System.out.println("性别码:" + sexCode + " 性别:女");
}
} else {
System.out.println("输入的身份证号为假");
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: