java判断身份证是否正确,要求判断准确直接给出代码案例
时间: 2023-02-10 13:29:54 浏览: 102
好的,首先需要确定的是,身份证号码由17位数字和1位校验码组成,前17位数字可以经过特定的算法得出校验码。因此,我们可以先将身份证号码前17位计算出校验码,然后再与身份证号码最后一位进行比较。
具体的,我们可以使用如下的代码来判断身份证号码是否正确:
```
public static boolean checkIDCard(String idCard) {
// 如果身份证号码长度不等于18位,则肯定不正确
if (idCard.length() != 18) {
return false;
}
// 前17位数字
String idCard17 = idCard.substring(0, 17);
// 第18位数字
String idCard18Code = idCard.substring(17, 18);
char c[] = null;
String checkCode = "";
// 是否都为数字
if (isDigital(idCard17)) {
c = idCard17.toCharArray();
} else {
return false;
}
int bit[] = new int[idCard17.length()];
bit = converCharToInt(c);
int sum17 = 0;
sum17 = getPowerSum(bit);
// 将和值与11取模得到余数进行校验码判断
checkCode = getCheckCodeBySum(sum17);
if (null == checkCode) {
return false;
}
// 将身份证的第18位与算出来的校码进行匹配,不相等就为假
if (!idCard18Code.equalsIgnoreCase(checkCode)) {
return false;
}
return true;
}
```
上述代码中,isDigital() 方法用于判断字符串是否全部由数字组成,converCharToInt() 方法
阅读全文