Ho provato a convertire i codici ISBN10 in numeri ISBN13 con Java. A partire dal . Su isbn-13.info ho trovato il modo di convertirli.Conversione da ISBN10 a ISBN13
Esempio: 0-123456-47-9
- iniziano con il prefisso di “978”
- Utilizzare i primi nove caratteri numerici della ISBN (includere trattini) 978-0-123456- 47-
- Calcolare la cifra di controllo EAN utilizzando il “Mod 10 Algoritmo” 978-0-123456-47-2
utilizzando che ho ho creato un programma Java per fare la conversione.
public class ISBNConverter {
public static void main(String[] args) {
String isbn10 = "9513218589";
String isbn13 = "";
int sum = 0;
int checkNumber = 0;
int multiplier = 2;
String code = "978" + isbn10.substring(0, isbn10.length() - 1);
for(int i = code.length() - 1; i >= 0; i--) {
int num = Character.getNumericValue(code.charAt(i));
isbn13 += String.valueOf(num * multiplier);
multiplier = (multiplier == 2) ? 1 : 2;
}
for(int i = 0; i < isbn13.length(); i++) {
sum += Character.getNumericValue(isbn13.charAt(i));
}
while(sum % 10 != 0) {
sum++;
checkNumber++;
}
System.out.println(checkNumber);
}
}
Per l'esempio di codice ISBN10 9513218589
(978951321858
ISBN13 senza il numero di controllo) restituisce 5 come il numero di controllo. Se lo calcolo utilizzando il convertitore su ISBN's official site ottengo 4 come somma di controllo. Per qualche motivo, la somma dei numeri nel nuovo codice è uno in meno di quanto dovrebbe essere.
Ho litigato con questo per molto tempo e credo di essere diventato cieco: non riesco a trovare quello che sto sbagliando. Qualcuno potrebbe aiutare con questo?
Si potrebbe provare a iniziare a implementare un metodo per calcolare la cifra di controllo EAN e testarlo – fge
Grazie. Dovresti postare questa risposta come risposta perché questo è il modo corretto. – MikkoP
Uhm bene, quello era solo un consiglio ... – fge