欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java身份證校驗位和信息提取

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

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

身份證校驗位的計算方法是將前17位加權求和,然后除以11取余,對應的余數就是校驗位。加權求和的權重分別是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;
}
// 定義加權數組
int[] weights = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
// 定義校驗碼對應數組
char[] checkCodeArray = new char[]{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
// 計算加權和
int sum = 0;
for (int i = 0; i< 17; i++) {
sum += Character.getNumericValue(id.charAt(i)) * weights[i];
}
// 取余數得到校驗位
int mod = sum % 11;
char checkCode = checkCodeArray[mod];
// 檢查校驗碼是否正確
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身份證校驗位和信息提取的相關內容。