2016-09-13 14 views
-3

Frage:JAVA ISBN-10 Nummer: Finden 10. Stelle

Ein ISBN-10 besteht aus 10 Ziffern: d1, d2, d3, d4, d5, d6, d7, d8, d9, d10. Die letzte Ziffer, D10, ist eine Prüfsumme, die von den anderen neun Ziffern berechnet wird die folgende Formel:

(d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 + d5 * 5 + d6 * 6 + d7 * 7 + 8 + d8 d9 * * 9) 11%

Wenn die Prüfsumme 10 ist, wird die letzte Ziffer als X bezeichnet gemäß der ISBN-10 Konvention.

Schreiben Sie ein Programm, das den Benutzer auffordert, die ersten 9 Ziffern einzugeben und die 10-stellige ISBN (einschließlich führender Nullen) anzuzeigen. Ihr Programm sollte die Eingabe als Ganzzahl lesen.

Hier sind Probendurchläufe:

Geben Sie die ersten 9 Ziffern einer ISBN als integer: 013601267

Die ISBN-10-Nummer 0136012671

MY CODE:

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); 
     } 
    } 
} 

AUSGABE: Ich bin neu beim Lernen von Java, daher habe ich Schwierigkeiten, diese Frage herauszufinden. Können mir einige sagen, wo ich falsch liege, weil ich nicht das erwartete Ergebnis bekomme? Vielen Dank.

+1

Du versuchst zu lesen 81 ganze Zahlen aus dem 'Scanner' ... –

+0

Würde es dir etwas ausmachen, darüber zu reden, wie ich das mache. Ich bin verwirrt darüber, wie ich 81 ganze Zahlen lese. –

Antwort

0

nextInt() verbraucht das gesamte Token 013601267, nicht nur eine einzelne Ziffer, die nicht Ihr Plan war. Ein einfacher Ansatz könnte sein, es als eine Zeichenkette zu konsumieren und iterieren dann über die Charaktere:

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

Da

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

hier alle Ihre Eingabe multiplizieren 9mal

wird

wie wenn Benutzer gibt 2 dann 2 wird multiplizieren wie (2 * 1) (2 * 2) (2 * 3) angezeigt auf .... so hier bei num [0] == 18 (2 * 9)