Java写ISBN是由13位数字组成,分为5段。例如,978-7-111-50690-4是一个合法的书号。编写程序,提示用户输入一个字符串书号,检查该书号是否合法。
时间: 2023-05-12 20:05:37 浏览: 353
好的,让我来回答你的问题。以下是一个Java程序,用于检查输入的字符串书号是否合法:
import java.util.Scanner;
public class ISBNChecker {
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("该书号是合法的。");
} else {
System.out.println("该书号不合法。");
}
}
public static boolean isValidISBN(String isbn) {
// 去除横杠
isbn = isbn.replaceAll("-", "");
// 检查长度是否为13位
if (isbn.length() != 13) {
return false;
}
// 检查是否全部由数字组成
if (!isbn.matches("\\d+")) {
return false;
}
// 计算校验位
int sum = 0;
for (int i = 0; i < 12; i++) {
int digit = Character.getNumericValue(isbn.charAt(i));
sum += (i % 2 == 0) ? digit : digit * 3;
}
int checkDigit = (10 - sum % 10) % 10;
// 检查校验位是否正确
return checkDigit == Character.getNumericValue(isbn.charAt(12));
}
}
你可以将这个程序保存为一个名为ISBNChecker.java的文件,然后在命令行中编译和运行它。当程序提示你输入一个字符串书号时,你可以输入任何一个13位数字组成的书号,包括横杠。程序会检查该书号是否合法,并输出相应的结果。
希望这个程序能够帮助你解决问题。如果你有任何其他问题,可以继续问我。
阅读全文