我的 isbn 检查器有什么错误?
what's the error in my isbn checker?
import java.util.Scanner;
//声明变量
public class ISBNChecker {
public static void main(String [] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter a 13 digit book number:");
String book = keyboard.nextLine();
int isbn = Integer.parseInt(book);
//检查isbn号的长度
if (book.length() != 13) {
System.out.println("ILLEGAL ISBN NUMBER");
}
//检查数字是否每1,3,5,7,9,11倍数,第13个数乘以3,其他数乘以1,然后相加
for(int i = 0; i < book.length(); i++){
char c = book.charAt(i); //get the current char
int value = c - '0'; //subtract '0' from the char
isbn += value * (i+1);
//the rest is to see if total of isbn is dividable by 10 to have no remains
}
if ((isbn % 10) != 0) {
System.out.println("Illegal ISBN number");
} else {
System.out.println("It's an ISBN number");
}
}
}
//the problem with this code is that it won't work and I am pretty sure I messed up the format. Please help me check.
// when I process it. this error shows up :
Exception in thread "main" java.lang.NumberFormatException: For input string: "1234567898765"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:583)
at java.lang.Integer.parseInt(Integer.java:615)
at ISBNChecker.main(ISBNChecker.java:8)
这个数字太大了,无法放入一个整数中。尝试使用 Long
代替..
Max Integer is 2147483647.
Max Long is 9223372036854775807L.
import java.util.Scanner;
//声明变量
public class ISBNChecker {
public static void main(String [] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter a 13 digit book number:");
String book = keyboard.nextLine();
int isbn = Integer.parseInt(book);
//检查isbn号的长度
if (book.length() != 13) {
System.out.println("ILLEGAL ISBN NUMBER");
}
//检查数字是否每1,3,5,7,9,11倍数,第13个数乘以3,其他数乘以1,然后相加
for(int i = 0; i < book.length(); i++){
char c = book.charAt(i); //get the current char
int value = c - '0'; //subtract '0' from the char
isbn += value * (i+1);
//the rest is to see if total of isbn is dividable by 10 to have no remains
}
if ((isbn % 10) != 0) {
System.out.println("Illegal ISBN number");
} else {
System.out.println("It's an ISBN number");
}
}
}
//the problem with this code is that it won't work and I am pretty sure I messed up the format. Please help me check.
// when I process it. this error shows up :
Exception in thread "main" java.lang.NumberFormatException: For input string: "1234567898765"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:583)
at java.lang.Integer.parseInt(Integer.java:615)
at ISBNChecker.main(ISBNChecker.java:8)
这个数字太大了,无法放入一个整数中。尝试使用 Long
代替..
Max Integer is 2147483647.
Max Long is 9223372036854775807L.