Überprüfen ESR Referenz-Nummer

Mir wurde die Aufgabe gestellt, eine Prüfroutine für die ESR-Referenz zu implementieren – in Java. Nach einem Fehlstart duch das Verwenden des falschen Algorithmus (Luhn Algorithmus zur Modulo 10 Prüfung) habe ich den Richtigen gefunden. Jedoch nur für C/C++, Visual Basic und PHP. Auf dieser Basis war es mir dann möglich eine Adaption für Java zu bilden:
Methode zum Überprüfen der ESR Referenz. Als Eingabestring (Nummer) wird s2test verwendet. Dieser String wird forgängig überprüft, ob er in einem akzeptierbaren Format vorliegt.
Die Letzte Ziffer der Referenz stellt die Prüfziffer dar.
Das Array tabelle geht auf Prüfziffern-Matrix (definiert von der Post) zurück und stellt daraus die erste Zeile dar:

Über Prüfziffern Prüf
0 1 2 3 4 5 6 7 8 9
0 0 9 4 6 8 2 7 1 3 5 0
1 9 4 6 8 2 7 1 3 5 0 9
2 4 6 8 2 7 1 3 5 0 9 8
3 6 8 2 7 1 3 5 0 9 4 7
4 8 2 7 1 3 5 0 9 4 6 6
5 2 7 1 3 5 0 9 4 6 8 5
6 7 1 3 5 0 9 4 6 8 2 4
7 1 3 5 0 9 4 6 8 2 7 3
8 3 5 0 9 4 6 8 2 7 1 2
9 5 0 9 4 6 8 2 7 1 3 1

public boolean checkModulo10Rekursiv(String number){
int[] tabelle = {0,9,4,6,8,2,7,1,3,5};
int next=0;
for (int i=0;i<number.length()-1;i++){
char ch = number.charAt(i);
int n = Character.digit(ch, 10);
int index = (next+n)%10;
next = tabelle[index];
}
int result = (10-next)%10;
char ch = number.charAt(26);
int n = Character.digit(ch, 10);
return result==n;
}

Schreibe einen Kommentar