三、检测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位
}
}