色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java身份證校驗(yàn)位和信息提取

傅智翔1年前7瀏覽0評論

在開發(fā)Java程序時,常常需要對身份證號進(jìn)行校驗(yàn)或者提取其中的信息。身份證號一共有18位,前17位為地區(qū)碼和出生日期碼的組合,最后一位為校驗(yàn)位。

身份證校驗(yàn)位的計(jì)算方法是將前17位加權(quán)求和,然后除以11取余,對應(yīng)的余數(shù)就是校驗(yàn)位。加權(quán)求和的權(quán)重分別是7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,其中最后一位用X表示。

public static boolean checkId(String id) {
if (id == null || id.length() != 18) {
return false;
}
// 定義加權(quán)數(shù)組
int[] weights = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
// 定義校驗(yàn)碼對應(yīng)數(shù)組
char[] checkCodeArray = new char[]{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
// 計(jì)算加權(quán)和
int sum = 0;
for (int i = 0; i< 17; i++) {
sum += Character.getNumericValue(id.charAt(i)) * weights[i];
}
// 取余數(shù)得到校驗(yàn)位
int mod = sum % 11;
char checkCode = checkCodeArray[mod];
// 檢查校驗(yàn)碼是否正確
return checkCode == id.charAt(17);
}

身份證信息提取可以通過截取身份證號的特定位置來獲得。例如,出生日期可以從第7-14位獲得,性別可以從第17位獲得,其中1表示男性,2表示女性。

public static String getGender(String id) {
if (id == null || id.length() != 18) {
return null;
}
char genderChar = id.charAt(16);
if (genderChar % 2 == 0) {
return "女";
} else {
return "男";
}
}
public static Date getBirthday(String id) {
if (id == null || id.length() != 18) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String birthdayStr = id.substring(6, 14);
try {
return sdf.parse(birthdayStr);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}

以上是Java身份證校驗(yàn)位和信息提取的相關(guān)內(nèi)容。