Mam taki kod, sprawdza on poprawność numeru pesel wg https://pl.wikipedia.org/wiki/PESEL#Cyfra_kontrolna_i_sprawdzanie_poprawno.C5.9Bci_numeru
Niektóre numery on sprawdza i są okej, z kolei niektóre numery wyświetla że są niepoprawne (chociaż są dobre), myślę, że tutaj chodzi o to
Przykład dla numeru PESEL 44051401358:
14 + 34 + 70 + 95 + 11 + 34 + 70 + 91 + 13 + 35 = 101
Wyznaczamy resztę z dzielenia sumy przez 10:
101:10 = 10 reszta = 1
Jeżeli reszta = 0, to cyfra kontrolna wynosi 0. Jeżeli reszta ≠ 0, to cyfra kontrolna będzie uzupełnieniem reszty do 10, czyli w podanym przykładzie jest to cyfra 9.
10 – 1 = 9
Wynik 9 nie jest równy ostatniej cyfrze numeru PESEL, czyli 8, więc numer jest błędny.
Proszę o rady, dziękuję
import java.util.Scanner;
public class WeryfikacjaPesel {
public static void main(String args[]) {
Scanner load = new Scanner(System.in);
String numberPesel = load.next();
if (numberPesel.length() == 11) {
int pierwszaCyfra = Integer.parseInt(numberPesel.substring(0, 1));
int drugaCyfra = Integer.parseInt(numberPesel.substring(1, 2));
int trzeciaCyfra = Integer.parseInt(numberPesel.substring(2, 3));
int czwartaCyfra = Integer.parseInt(numberPesel.substring(3, 4));
int piataCyfra = Integer.parseInt(numberPesel.substring(4, 5));
int szostaCyfra = Integer.parseInt(numberPesel.substring(5, 6));
int siodmaCyfra = Integer.parseInt(numberPesel.substring(6, 7));
int osmaCyfra = Integer.parseInt(numberPesel.substring(7, 8));
int dziewiataCyfra = Integer.parseInt(numberPesel.substring(8, 9));
int dziesiataCyfra = Integer.parseInt(numberPesel.substring(9, 10));
int jedenastaCyfra = Integer
.parseInt(numberPesel.substring(10, 11));
int check = 1 * pierwszaCyfra + 3 * drugaCyfra + 7 * trzeciaCyfra
+ 9 * czwartaCyfra + 1 * piataCyfra + 3 * szostaCyfra + 7
* siodmaCyfra + 9 * osmaCyfra + 1 * dziewiataCyfra + 3
* dziesiataCyfra;
int lastNumber = check % 10;
int controlNumber = 10 - lastNumber;
if (controlNumber == jedenastaCyfra) {
System.out.println("Ok pesel");
}
else {
System.out.println("Podałeś błędny numer Pesel");
}
}
}
}