Java:
public static void main(String[] args){
System.out.printf("Ausweisnummer (Seriennummer und Prüfziffer): ");
BufferedReader in2 = new BufferedReader( new InputStreamReader(System.in) );
String z2 = in2.readLine();
System.out.printf( "Geburtsdatum im Format „JJMMTT“ mit "
+ "abschließender Prüfziffer: " );
BufferedReader in3 = new BufferedReader( new InputStreamReader(System.in) );
String z3 = in3.readLine();
System.out.printf( "Letzter Tag der Gültigkeit im Format „JJMMTT“ "
+ "mit abschließender Prüfziffer: " );
BufferedReader in4 = new BufferedReader( new InputStreamReader(System.in) );
String z4 = in4.readLine();
}
// int[] numbers darf kein String-Array sein und es darf kein zusätzliches array in die paramerliste hinzugefügt werden
public static int calcChecksum( int[] numbers ){
int FAKTOR[] = {7,3,1};
// Benötige Zugriff auf: // zur weiteren Bearbeitung
String Ausweisnummer = "1220001297"; //Ausweisnummer = z2
String Geburtsdatum = "6408125"; //Geburtsdatum = z3
String Ablaufdatum = "1710319"; //Ablaufdatum = z4
//Nicht weiter relevant für die Frage___________________________________________
// Ausweisnummer(Seriennummer und Prüfziffer): Ermittlung der Prüfziffer
int p = 0;
for(int i = 0; i < numbers.length; i++)
{
char ch = Ausweisnummer.charAt(i);
numbers[i] = Character.digit(ch, 36);
if( i == 0 || i == 3 || i == 6)
p = p + numbers[i]*FAKTOR[0]%10;
else if( i == 1 || i == 4 || i == 7)
p = p + numbers[i]*FAKTOR[1]%10;
else if( i == 2 || i == 5 || i == 8)
p = p + numbers[i]*FAKTOR[2]%10;
}
//(Summe der gewichteten Zahlen) modulo 10
p = p%10;
// Geburtsdatum: Ermittlung der Prüfziffer
int g = 0;
for(int i = 0; i < 7; i++)
{
numbers[i] = (Geburtsdatum.charAt(i)-'0');
if( i == 0 || i == 3)
g = g + numbers[i]*FAKTOR[0]%10;
else if( i == 1 || i == 4 )
g = g + numbers[i]*FAKTOR[1]%10;
else if( i == 2 || i == 5 )
g = g + numbers[i]*FAKTOR[2]%10;
}
//(Summe der gewichteten Zahlen) modulo 10
g = g%10;
// Ablaufdatum: Ermittlung der Prüfziffer
int a = 0;
for(int i = 0; i < 7; i++)
{
numbers[i] = (Ablaufdatum.charAt(i)-'0');
if( i == 0 || i == 3 )
a = a + numbers[i]*FAKTOR[0]%10;
else if( i == 1 || i == 4 )
a = a + numbers[i]*FAKTOR[1]%10;
else if( i == 2 || i == 5 )
a = a + numbers[i]*FAKTOR[2]%10;
}
//(Summe der gewichteten Zahlen) modulo 10
a = a%10;
// Ermittlung der Prüfziffer für die gesamte Zeile
int z = ( p+g+a+(p+g+a)*7 )%10;
return z ;