java题【问题描述】国际标准书号ISBN是由13位数字组成,分为5段,如978-7-111-50690-4是一个合法的书号。编写程序,用户输入一个字符串书号,检查该书号是否合法。
时间: 2024-03-27 22:38:49 浏览: 123
以下是Java程序代码实现:
```java
import java.util.Scanner;
public class ISBNValidator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个ISBN号码:");
String isbn = input.next();
// 去掉中间的横杠
isbn = isbn.replace("-", "");
// 判断是否为13位数字
if (isbn.length() != 13 || !isbn.matches("\\d+")) {
System.out.println("输入的ISBN号码不合法!");
return;
}
// 计算校验和
int sum = 0;
for (int i = 0; i < 12; i++) {
sum += (i % 2 == 0 ? 1 : 3) * (isbn.charAt(i) - '0');
}
int checkDigit = 10 - sum % 10;
if (checkDigit == 10) {
checkDigit = 0;
}
// 比较校验位和计算出的校验和
if (checkDigit != isbn.charAt(12) - '0') {
System.out.println("输入的ISBN号码不合法!");
return;
}
System.out.println("输入的ISBN号码合法!");
}
}
```
程序首先让用户输入一个字符串书号,然后将中间的横杠去掉。接着判断该书号是否为13位数字,如果不是,则输出不合法的信息。如果是,则计算校验和,根据校验和计算出校验位,并将其与输入的书号的最后一位进行比较,如果不相等,则输出不合法的信息。如果校验通过,则输出合法的信息。
阅读全文