国际标准书号ISBN是由13位数字组成,分为5段。例如,978-7-111-50690-4是一个合法的书号。编写java程序,提示用户输入一个字符串书号,检查该书号是否合法。
时间: 2024-05-14 13:15:03 浏览: 168
编写一个程序接受用户输入的字符。如果输入的字符是0-9数字中的一个,则显示“您输入了一个数字”,否则显示“这不是一个数字”。
```
import java.util.Scanner;
public class ISBNValidator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入书号:");
String isbn = scanner.nextLine();
if (isValidISBN(isbn)) {
System.out.println(isbn + " 是一个合法的书号。");
} else {
System.out.println(isbn + " 不是一个合法的书号。");
}
}
public static boolean isValidISBN(String isbn) {
// 去掉中间的分隔符
isbn = isbn.replaceAll("-", "");
// ISBN必须是13位数字
if (isbn.length() != 13 || !isbn.matches("\\d+")) {
return false;
}
// 计算校验位
int checkSum = 0;
for (int i = 0; i < 12; i++) {
int digit = Integer.parseInt(isbn.substring(i, i + 1));
checkSum += (i % 2 == 0) ? digit : digit * 3;
}
int checkDigit = 10 - (checkSum % 10);
// 校验校验位
return checkDigit == Integer.parseInt(isbn.substring(12));
}
}
```
运行结果:
```
请输入书号:978-7-111-50690-4
978-7-111-50690-4 是一个合法的书号。
```
阅读全文