身份证校验规则的java代码
时间: 2024-06-09 20:11:53 浏览: 171
一个有关身份证号码校验的JS代码
以下是身份证校验规则的Java代码:
```java
public boolean isIDCard(String id) {
if (id == null || id.length() != 18) {
return false;
}
char[] chars = id.toCharArray();
int sum = 0;
for (int i = 0; i < 17; i++) {
int temp = chars[i] - '0';
if (temp < 0 || temp > 9) {
return false;
}
sum += temp * WEIGHTS[i];
}
if (CHECK_CODES[sum % 11] != chars[17]) {
return false;
}
return true;
}
private static final int[] WEIGHTS = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
private static final char[] CHECK_CODES = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
```
其中,`isIDCard`方法接收一个身份证号码作为参数,返回一个布尔值,表示该身份证号码是否合法。该方法的实现过程如下:
1. 首先判断该身份证号码是否为空,或者长度是否为18位。如果不是,则直接返回false。
2. 将身份证号码的前17位按照规定的权重进行加权求和,然后将结果对11取余,得到一个数字。
3. 将第2步得到的数字对应到一个校验码上,与身份证号码的第18位进行比较。如果相同,则表示该身份证号码合法;否则表示不合法。
其中,`WEIGHTS`数组和`CHECK_CODES`数组分别表示身份证号码中前17位的权重和校验码。
阅读全文