检测ISBN

三、检测ISBN

ISBN-13是标识书籍的新标准。它使用13位数字d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13。最后一位数字d13是校验位,是使用下面的公式从其他数字中计算出来的:

10-(d1 +3d2+ d3+3d4 +d5 +3d6 +d7 +3d8 +d9 +3d10+ d11 +3d12)%10

   如果校验和为10,将其替换成0。程序应该将输入作为一个字符串读入。如果用户输入一个不正确的ISBN号码,提示用户继续输入,直到输入符合要求为止。运行示例如下:

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.print("Enter the first 12-digit of an ISBN number as a string: ");
        String s=input.nextLine();

        int sum=Change(s);
        while (s.length()!=12) {
            System.out.println(s + " is an invalid input");
            System.out.print("Again Enter the first 12-digit of an ISBN number as a string: ");
            s=input.nextLine();
            sum=Change(s);
        }

        System.out.println("The ISBN number is "+s+sum);
    }
    public static int Change(String s) {
        char[] a=new char[s.length()];
        int[] num=new int[s.length()];
        int sum1=0,sum2=0,sum=0;
        for(int i=0;i<s.length();i++){//将字符转化为int型
            a[i]=s.charAt(i);
            num[i]=a[i]-'0';
            if(i%2!=0){
                sum1+=3*num[i];
            }
            else{
                sum2+=num[i];
            }
        }
        sum=10-(sum1+sum2)%10;//d13校验位
        if(sum==10){
            sum=0;
        }
        return sum;//返回第13位
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值