Witam użytkowników tego forum. Zaczynam dopiero swoją przygodę z Javą dlatego proszę o jak najwięcej uwag (nawet tych krytycznych :), dzięki którym coś będę mógł poprawić w kodzie.) Na chwilę obecną przerabiam zadanie z książki Introduction to Java D.Lianga która polega na wczytaniu numeru ISBN w postaci 10 cyfrowej (tj. d1d2d3d4d5d6d7d8d9d10). Ostatnia cyfra d10 jest sumą kontrolną która jest wyznaczana na podstawie tego wzoru:
(d1 X 1 + d2 X 2 + d3 X 3 + d4 X 4 + d5 X 5 + d6 X 6 + d7 X 7 + d8 X 8 + d9 X 9) % 11. Problem w tym że kod działa poprawnie dla liczb nie zaczynających się od "0" (np. 213031267). Ale przy inicjalizacji zmiennej temp zaczynającej się od "0" wyświetla zupełnie inną wartość (tj. dla 013031267 zmienna temp ma wartość 2896567). Pomoglibyście mi zrozumieć dlaczego tak się dzieje? Poniżej zamieszczam kod.
public class Test2 {
public static void main(String[] args) {
//Wczytywanie 9 cyfrowej zmeinnej ISBN-10
int temp = 913601267;
System.out.println(temp);
//Sprawdzanie cyfra po cyfrze i sumowanie wartosci z moda (%)
int digit = temp;
int sum = 0;
int n = 9; //liczba wprowadzonych cyfr ISBNu
digit = digit / 10;
while (digit > 0) {
sum = sum + n * digit % 10;
digit = digit / 10;
n--;
}
//Sprawdzanie wartości ostatniej cyfry
int last = sum % 11;
System.out.print(temp);
if (last == 0)
System.out.print("x");
else
System.out.print(last);
}
}
Dziękuję z góry za pomoc
Konrad