国际标准书号由13位数字组成,分为5段。例如978-7-111-50690-4是一个合格的书号。编写Java程序,提示用户输入一个书号,检查该书稿是否合法
时间: 2024-10-13 10:13:20 浏览: 61
国际标准书号(ISBN)的确是由13位数字组成的,可以分为四个部分:第一个部分代表地区,第二个部分代表类别,第三部分是出版社代码,最后两个部分是校验码。在Java中,你可以通过创建一个简单的函数来验证用户的输入。以下是一个基本的示例:
```java
import java.util.Scanner;
public class ISBNValidator {
private static final int[] CHECK_DIGITS = {1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 10};
public static boolean isValidISBN(String isbn) {
if (isbn.length() != 13 || !isbn.matches("\\d{13}")) {
return false;
}
// 分割书号并获取各个部分
String prefix = isbn.substring(0, 3);
String publisherPart = isbn.substring(3, 7);
String rest = isbn.substring(7);
// 计算校验码
int sum = 0;
for (int i = 0; i < 12; i++) {
sum += Integer.parseInt(rest.charAt(i - 1) + "") * CHECK_DIGITS[i];
}
// 校验码计算
int checkDigit = 10 - (sum % 10);
if (checkDigit == 10) checkDigit = 0;
// 检查最后一个字符是否等于计算出的校验码
return rest.charAt(12) == Character.toString(checkDigit).charAt(0);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个13位的国际标准书号:");
String isbnInput = scanner.nextLine();
if (isValidISBN(isbnInput)) {
System.out.println("这是一个有效的ISBN号码。");
} else {
System.out.println("这不是一个有效的ISBN号码。");
}
}
}
```
在这个程序中,我们首先检查输入字符串长度是否为13,并且只包含数字。然后,我们将书号分割成前缀、出版社代码以及剩余部分。接着,我们按照公式计算校验码并与输入的最后一位进行比较。
阅读全文