java isbn码校验
时间: 2023-10-18 15:14:23 浏览: 204
ISBN:Java 中的不可变 ISBN 类
ISBN码是由13位数字组成的,其中最后一位是校验码,用来验证前面12位是否正确。以下是Java代码实现ISBN码的校验:
```java
public static boolean isValidISBN(String isbn) {
if (isbn == null || isbn.length() != 13) {
return false;
}
int sum = 0;
for (int i = 0; i < 12; i++) {
char c = isbn.charAt(i);
if (!Character.isDigit(c)) {
return false;
}
sum += (c - '0') * (i % 2 == 0 ? 1 : 3);
}
char checkDigit = isbn.charAt(12);
if (checkDigit == 'X') {
sum += 10;
} else if (Character.isDigit(checkDigit)) {
sum += checkDigit - '0';
} else {
return false;
}
return sum % 10 == 0;
}
```
该方法接收一个字符串类型的ISBN码,首先判断该字符串是否为空或长度是否为13,如果不是,则返回false。然后遍历前12位数字,验证每一位是否为数字,并且根据位置计算出权重值,最后求和。接着根据校验码的规则,计算出校验和,最后判断校验和是否为10的倍数,如果是,则返回true,否则返回false。
阅读全文