2016-09-13 92 views
-3

問:JAVA ISBN-10編號:查找第10位

的ISBN-10由10位數字:D1,D2,D3,D4,D5,D6,D7,D8,D9,D10。最後的數字,D10,是校驗,它是從使用 其它九個數字計算公式如下:

(D1 * 1 + D2×2 + D3×3 + D4×4 + D5 * 5 + d6 * 6 + d7 * 7 + d8 * 8 + d9 * 9)%11

如果校驗和爲10,則根據ISBN-10 慣例將最後一位數字表示爲X.

編寫一個程序,提示用戶輸入前9位數字並顯示10位ISBN(包括前導零)。您的程序應該將輸入讀取爲整數。

下面是樣品運行:

輸入第9個的ISBN位數爲整數:013601267

的ISBN-10號是0136012671

我的代碼:

import java.util.Scanner; 

public class ISBN_Number { 

    public static void main(String[] args) { 
     Scanner s = new Scanner(System.in); 

     int[] num = new int[9]; 

     System.out.println("Enter the first 9 digits of the an ISBN as integer: "); 

     for (int i = 0; i < num.length; i++) { 
      for (int j = 1; j < 10; j++) { 
       num[i] = s.nextInt() * j; 
      } 
     } 

     int sum = 0; 
     for (int a = 0; a < 10; a++) { 
      sum += num[a]; 
     } 
     int d10 = (sum % 11); 
     System.out.println(d10); 

     if (d10 == 10) { 
      System.out.println("The ISBN-10 number is " + num + "X"); 
     } else { 
      System.out.println("The ISBN-10 number is" + num); 
     } 
    } 
} 

ISSUE: 我是學習java的新手,因此我無法解決這個問題。有人可以告訴我我錯在哪裏,因爲我沒有得到預期的結果。謝謝。

+1

你正在閱讀「掃描儀」中的81個整數...... –

+0

你介意我是怎麼做的。我對我如何閱讀81個整數感到困惑。 –

回答

0

nextInt()消耗整個令牌013601267,不只是一個數字,這不是你的計劃。一個更容易的方法可以是使用它作爲一個字符串,然後遍歷字符:

String num = s.next(); 
int sum = 0; 
for (int i = 1; i <= num.length(); ++i) { 
    sum += (i * num.charAt(i - 1) - '0'); 
} 

int d10 = (sum % 11); 
if (d10 == 10) { 
    System.out.println("The ISBN-10 number is " + num + "X"); 
} else { 
    System.out.println("The ISBN-10 number is " + num + d10); 
} 
0

因爲

for (int i = 0; i < num.length; i++) { 
     for (int j = 1; j < 10; j++) { 
      num[i] = s.nextInt() * j; 
     } 
    } 

在這裏你的每一個輸入將是乘9倍

就像當用戶輸入2 然後2將像在...上顯示的(2 * 1)(2 * 2)(2 * 3)那樣相乘,所以這裏在num [0] == 18(2 * 9)