Prüfziffern von Euro-Geldscheinen berechnen

Hallo, ich habe ein Problem mit einer Aufgabe, die uns mein Informatik Lehrer gestellt hat. Wir programmieren mit dem Java-Editor.
Ich stelle zunächst die Aufgabe hier rein:

Euro-Banknoten haben eine eindeutige Seriennummer, die aus einem führenden Buchstaben, 10 Ziffern und einer Prüfziffer bestehen.

Beispiel: Z 6016220022 6

Der führende Buchstabe codiert die nationale Zentralbank (NZB-Nummer), die den Geldschein im Umlauf gebracht hat.

Die Prüfziffer wird wie folgt berechnet:

  • Der Buchstabe wird durch seine Position im Alphabet ersetzt (bei Z alo 26)

  • Es wird die Quersumme der Positionszahl und der 10 Ziffern berechnet (im Beispiel 2+6+6+0+1+6+2+2+0+0+2+2 = 29)

  • Die Zahl wird durch 9 geteilt und der Rest bestimmt (im Beispiel ist der Rest = 2)

-Der Rest wird von 8 subtrahiert. Das Resultat ist die Prüfziffer (im Beispiel ist das 6). Es sei denn es kam 0 als Differenz heraus, dann ist die Prüfziffer 9.

Aufgabe:
Implementiere ein Javaprogramm, welches für eine Seriennummer (gegeben als String) die Prüfziffer berechnet und zurückgibt. Die Seriennummer sei im Feld in umgekehrter Reihenfolge gegeben: seriennummer[0] ist
also der Buchstabe, seriennummer[11] die Prüfziffer. Der Buchstabe ist immer groß. Fehlerfälle brauchen nicht berücksichtigt werden.

So, mein Lehrer hat uns noch auf dem Blatt ein paar Tipps gegeben, welche Methoden wir benutzen können und beschrieben was diese Methode in etwa machen muss. Den Rest sollen wir selbst programmieren.

Ich bin mittlerweile so weit:

class Pruefziffer {

public static int berechneQuersumme (String s) {

}

public static int lieferePositionImAlphabet (String c) {

}

public static String ermittleNeueSerienNr (String s) {

}

public static void main (String[] args) {

String seriennr = new String(„Z6016220022“);
int rest = 0;
int pruefziffer = 0;

rest = quersumme%9;

pruefziffer = 8 - rest;

if (pruefziffer == 0) {
pruefziffer = 9;
}

System.out.println("Die Prüfziffer lautet: " + pruefziffer);
}
}

Die drei Methoden berechneQuersumme(), lieferePositionImAlphabet() & ermittleNeueSeriennummer() muss ich also noch machen.

als erstes müsste die die Position des Buchstabens bestimmt werden. dort hat mir mein Lehrer nur als hilfe angegeben, dass dort die charAt Methode hilfreich sein würde. und welche Buchstaben welche ASCII-Nummern haben.

Problem, die charAt methode haben wir noch nie gemacht, ich hab keinerlei Ahnung wie man die anwendet und was es mir bringt. Alles was ich darüber im Internet finde versteh ich auch irgendwie nicht.

Tut mir leid für diesen riesen Artikel aber ich würde mich freuen wenn sich jemand dennoch damit befasst und mir helfen könnte :smile: Danke schonmal.

Gruß Shelby

String s = „abc“;
char c = s.charAt(1);
// c = ‚b‘

an position 1 das zeichen ,
bedenke alles fängt bei 0 an .
s[0] = „a“;
s[1] = „b“;
s[2] = „c“;

also kommt für
c bei s position 1 dann b raus.

wenn du den buchstaben hast mussu gucken welchen ASCII code der hat.

z.b. wenn A in ASCII DEZIMAL den wert 65 hat
und B dann 66 , dann ergibt sich ja eine formel
wir brauchen für A den wert 1 für B den wert 2
also

Wert-64 = Position im Alphabet

Nun können wir einfach das Zeichen auf seinen Integer wert wandeln und schon haben wir den benötigten Wert

int Wert = (int) c;

so das sollte Dir es schon mal einfacher machen .

viel spass.

Hey Danke, das hat mich echt weiter gebracht :smile: