ISBN是由13位数字组成,分为5段。例如,978-7-111-50690-4是一个合法的书号。编写程序,提示用户输入一个字符串书号,检查该书号是否合法。
时间: 2023-05-12 11:05:37 浏览: 250
好的,我可以回答这个问题。以下是一个Python程序,用于检查输入的字符串是否为合法的ISBN号码:
```python
def is_valid_isbn(isbn):
# 去除所有非数字字符
isbn = ''.join(filter(str.isdigit, isbn))
# ISBN必须是13位数字
if len(isbn) != 13:
return False
# 计算校验和
s = sum(int(isbn[i]) * (1 if i % 2 == 0 else 3) for i in range(12))
check_digit = (10 - s % 10) % 10
# 检查校验位
return int(isbn[-1]) == check_digit
# 测试
isbn = input("请输入一个ISBN号码:")
if is_valid_isbn(isbn):
print("这是一个合法的ISBN号码。")
else:
print("这不是一个合法的ISBN号码。")
```
这个程序会提示用户输入一个字符串书号,然后检查该书号是否合法。如果输入的书号是一个合法的ISBN号码,程序会输出“这是一个合法的ISBN号码。”,否则会输出“这不是一个合法的ISBN号码。”。
相关问题
国际标准书号ISBN是由13位数字组成,分为5段。例如,978-7-111-50690-4是一个合法的书号。编写java程序,提示用户输入一个字符串书号,检查该书号是否合法。
```
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 是一个合法的书号。
```
Java写ISBN是由13位数字组成,分为5段。例如,978-7-111-50690-4是一个合法的书号。编写程序,提示用户输入一个字符串书号,检查该书号是否合法。
好的,让我来回答你的问题。以下是一个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位数字组成的书号,包括横杠。程序会检查该书号是否合法,并输出相应的结果。
希望这个程序能够帮助你解决问题。如果你有任何其他问题,可以继续问我。
阅读全文