编写一个应用程序 ISBNVerification.java,使得该程序可以实现以下功能:从键盘输入中国的某ISBN书号,程序判断输入的ISBN书号是否符合标准的书号,如果输入的书号符合标准,则输出“符合标准”,否则输出“不符合标准”。
时间: 2024-02-13 08:07:53 浏览: 97
以下是根据中国图书ISBN管理中心标准编写的Java程序,用于验证输入的ISBN是否符合标准:
```java
import java.util.Scanner;
public class ISBNVerification {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个ISBN号码:");
String isbn = sc.nextLine().trim();
if (isValidISBN(isbn)) {
System.out.println("符合标准");
} else {
System.out.println("不符合标准");
}
sc.close();
}
public static boolean isValidISBN(String isbn) {
// 去除空格和横杠
isbn = isbn.replaceAll("\\s|-", "");
// ISBN必须是13位
if (isbn.length() != 13) {
return false;
}
// 前三位必须是978或979
if (!isbn.startsWith("978") && !isbn.startsWith("979")) {
return false;
}
// 最后一位为校验码,需要特殊处理
char lastChar = isbn.charAt(12);
if (!Character.isDigit(lastChar) && lastChar != 'X') {
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);
}
int checkDigit = (10 - sum % 10) % 10;
if (lastChar == 'X') {
return checkDigit == 10;
} else {
return checkDigit == (lastChar - '0');
}
}
}
```
程序首先从键盘读取一个ISBN号码,然后调用`isValidISBN`方法来判断该号码是否符合标准。在`isValidISBN`方法中,程序先去除输入中的空格和横杠,然后判断该号码是否为13位,前三位是否为978或979,最后一位是否为数字或X。如果都符合要求,程序再计算该号码的校验码,并与最后一位进行比较,以确定该号码是否合法。如果合法,`isValidISBN`方法返回`true`,否则返回`false`。最后在`main`方法中根据返回值输出相应的结果。
阅读全文