编程练习 P124 6.2 java国际标准书号ISBN是由13位数字组成,分为5段,如978-7-111-50690-4是一个合法的书号。编写程序,用户输入一个字符串书号,检查该书号是否合法。

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号码合法!");
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_39719874

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值