2015-12-13 13 views
-1
import java.util.Scanner; 

//聲明變量我的isbn檢查器有什麼錯誤?

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 multipled和每隔一個號碼,然後把它們加起來

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) 

回答

2

這個數字太大,不適合到一個整數。嘗試使用Long,而不是..

最大整數是2147483647

最大長是9223372036854775807L。