用java写一个校验身份证号
时间: 2023-04-12 12:00:31 浏览: 184
以下是一个用 Java 编写的校验身份证号的代码示例:
```java
public static boolean isIdCardValid(String idCard) {
if (idCard == null || idCard.length() != 18) {
return false;
}
char[] chars = idCard.toCharArray();
int[] weights = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char[] checkCodes = new char[]{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int sum = 0;
for (int i = 0; i < 17; i++) {
if (chars[i] < '0' || chars[i] > '9') {
return false;
}
sum += (chars[i] - '0') * weights[i];
}
int checkCodeIndex = sum % 11;
return chars[17] == checkCodes[checkCodeIndex];
}
```
该方法接收一个身份证号作为参数,返回一个布尔值,表示该身份证号是否合法。如果身份证号不是 18 位或者其中包含非数字字符,该方法会直接返回 false。否则,该方法会根据身份证号的前 17 位和一组固定的权重值计算出一个校验码,然后将该校验码与身份证号的最后一位进行比较,如果相同则返回 true,否则返回 false。
注意:该代码仅供参考,实际应用中可能需要根据具体需求进行修改和优化。
阅读全文