ISBN (International Standard Book Number) consists of 10 digits d1d2d3d4d5d6d7d8
ID: 3674852 • Letter: I
Question
ISBN (International Standard Book Number) consists of 10 digits d1d2d3d4d5d6d7d8d9d10. The last digit d10 is a checksum, which is calculated from the other nine digits using the following formula: (d1 x 1 + d2 x 2 + d3 x 3+ d4 x 4 T d5 x 5 + d6 x 6 + d7 x 7 + d8 x 8 + d9 x 9) % 11 If the checksum is 10, the last digit is denoted X according to the ISBN convention. Write a program that prompts the user to enter one String that contains the first 9 digits of the ISBN and displays the 10-digit ISBN (including leading zeros). Your program should read the input as a single string (which may omit leading zeros). Example 1: if the user enters 13601267, the program should display "The correct ISBN number is 0136012671". Example 2: if the user enters 12345, the program should display 'The correct ISBN number is 0000123455".Explanation / Answer
package num;
publica class ISBN
{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in); // object for input
String s=null;
System.out.println("Enter input");
s=sc.nextLine(); // using scanner method
char[] c=s.toCharArray(); // string to char array conversion
int len=c.length; // storing length of characters entered
int checksum;
System.out.println(len);
switch(len) // switch for different type of numbers
{
case 1:
int t=Character.getNumericValue(c[0]);
checksum=(t*9)%11;
if(checksum==10)
{
System.out.println("00000000"+c[0]+""+"X");
}
else
System.out.println("00000000"+c[0]+""+checksum);
break;
case 2:
int[] at2=new int[2];
at2[0]=Character.getNumericValue(c[0]);
at2[1]=Character.getNumericValue(c[1]);
checksum=((at2[0]*8)+(at2[1]*9))%11;
if(checksum==10)
{
System.out.println("0000000"+c[0]+""+c[1]+"X");
}
else
System.out.println("0000000"+c[0]+""+c[1]+""+checksum);
break;
case 3:
int[] at3=new int[3];
at3[0]=Character.getNumericValue(c[0]);
at3[1]=Character.getNumericValue(c[1]);
at3[2]=Character.getNumericValue(c[2]);
checksum=((at3[0]*7)+(at3[1]*8)+(at3[2]*9))%11;
if(checksum==10)
{
System.out.println("000000"+c[0]+""+c[1]+""+c[2]+"X");
}
else
System.out.println("000000"+c[0]+""+c[1]+""+c[2]+""+checksum);
break;
case 4:
int[] at4=new int[4];
at4[0]=Character.getNumericValue(c[0]);
at4[1]=Character.getNumericValue(c[1]);
at4[2]=Character.getNumericValue(c[2]);
at4[3]=Character.getNumericValue(c[3]);
checksum=((at4[0]*6)+(at4[1]*7)+(at4[2]*8)+(at4[3]*9))%11;
if(checksum==10)
{
System.out.println("00000"+c[0]+""+c[1]+""+c[2]+""+c[3]+"X");
}
else
System.out.println("00000"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+checksum);
break;
case 5:
int[] at5=new int[5];
at5[0]=Character.getNumericValue(c[0]);
at5[1]=Character.getNumericValue(c[1]);
at5[2]=Character.getNumericValue(c[2]);
at5[3]=Character.getNumericValue(c[3]);
at5[4]=Character.getNumericValue(c[4]);
checksum=((at5[0]*5)+(at5[1]*6)+(at5[2]*7)+(at5[3]*8)+(at5[4]*9))%11;
if(checksum==10)
{
System.out.println("0000"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+"X");
}
else
System.out.println("0000"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+checksum);
break;
case 6:
int[] at6=new int[6];
at6[0]=Character.getNumericValue(c[0]);
at6[1]=Character.getNumericValue(c[1]);
at6[2]=Character.getNumericValue(c[2]);
at6[3]=Character.getNumericValue(c[3]);
at6[4]=Character.getNumericValue(c[4]);
at6[5]=Character.getNumericValue(c[5]);
checksum=((at6[0]*4)+(at6[1]*5)+(at6[2]*6)+(at6[3]*7)+(at6[4]*8)+(at6[5]*9))%11;
if(checksum==10)
{
System.out.println("000"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+"X");
}
else
System.out.println("000"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+""+checksum);
break;
case 7:
int[] at7=new int[7];
at7[0]=Character.getNumericValue(c[0]);
at7[1]=Character.getNumericValue(c[1]);
at7[2]=Character.getNumericValue(c[2]);
at7[3]=Character.getNumericValue(c[3]);
at7[4]=Character.getNumericValue(c[4]);
at7[5]=Character.getNumericValue(c[5]);
at7[6]=Character.getNumericValue(c[6]);
checksum=((at7[0]*3)+(at7[1]*4)+(at7[2]*5)+(at7[3]*6)+(at7[4]*7)+(at7[5]*8)+(at7[6]*9))%11;
if(checksum==10)
{
System.out.println("00"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+""+c[6]+"X");
}
else
System.out.println("00"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+""+c[6]+""+checksum);
break;
case 8:
int[] at8=new int[8];
at8[0]=Character.getNumericValue(c[0]);
at8[1]=Character.getNumericValue(c[1]);
at8[2]=Character.getNumericValue(c[2]);
at8[3]=Character.getNumericValue(c[3]);
at8[4]=Character.getNumericValue(c[4]);
at8[5]=Character.getNumericValue(c[5]);
at8[6]=Character.getNumericValue(c[6]);
at8[7]=Character.getNumericValue(c[7]);
checksum=((at8[0]*2)+(at8[1]*3)+(at8[2]*4)+(at8[3]*5)+(at8[4]*6)+(at8[5]*7)+(at8[6]*8)+(at8[7]*9))%11;
if(checksum==10)
{
System.out.println("0"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+""+c[6]+""+c[7]+"X");
}
else
System.out.println("0"+c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+""+c[6]+""+c[7]+""+checksum);
break;
case 9:
int[] at9=new int[9]; // new array of required size
at9[0]=Character.getNumericValue(c[0]); // converting char value to int value to calculate checksum
at9[1]=Character.getNumericValue(c[1]);
at9[2]=Character.getNumericValue(c[2]);
at9[3]=Character.getNumericValue(c[3]);
at9[4]=Character.getNumericValue(c[4]);
at9[5]=Character.getNumericValue(c[5]);
at9[6]=Character.getNumericValue(c[6]);
at9[7]=Character.getNumericValue(c[7]);
at9[8]=Character.getNumericValue(c[8]);
checksum=((at9[0]*1)+(at9[1]*2)+(at9[2]*3)+(at9[3]*4)+(at9[4]*5)+(at9[5]*6)+(at9[6]*7)+(at9[7]*8)+(at9[8]*9))%11; // checksum calculation
if(checksum==10) // checking weather the checksum is 10 or not
{
System.out.println(c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+""+c[6]+""+c[7]+""+c[8]+"X");
}
else
System.out.println(c[0]+""+c[1]+""+c[2]+""+c[3]+""+c[4]+""+c[5]+""+c[6]+""+c[7]+""+c[8]+""+checksum);
break;
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.