Próbowałem konwertować kody ISBN10 na numery ISBN13 w Javie. Od . Na isbn-13.info znalazłem sposób na ich konwersję.Konwersja ISBN10 na ISBN13
przykład: 0-123456-47-9
- rozpoczęciem z przedrostkiem „978”
- użytkowania pierwszymi dziewięć postaci numerycznej (ISBN obejmują kreski) 978-0-123456- 47-
- Obliczanie cyfry kontrolnej EAN używając algorytmu „mod 10” 978-0-123456-47-2
Korzystanie że ja stworzyłem program Java do przeprowadzenia konwersji.
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);
}
}
Dla przykładowego kodu ISBN10 9513218589
(978951321858
ISBN13 bez numeru Check) to zwraca 5 jako numer czeku. Jeśli obliczę to za pomocą konwertera na ISBN's official site, otrzymam 4 jako sumę kontrolną. Z jakiegoś powodu suma liczb w nowym kodzie jest mniejsza niż powinna być.
Walczę z tym od dawna i wydaje mi się, że zacząłem ślepić: po prostu nie mogę znaleźć tego, co robię źle. Czy ktoś mógłby w tym pomóc?
Możesz spróbować i rozpocząć wdrażanie metody obliczania cyfry kontrolnej EAN i testowania jej – fge
Dzięki. Powinieneś opublikować to jako odpowiedź, ponieważ jest to poprawna metoda. – MikkoP
Uhm cóż, to była tylko rada ... – fge