001 package de.hska.java.aufgaben.felder;
002
003 /**
004 * Euronote ist verantwortlich für die Berechnung
005 * der Prüfziffer einer Seriennummer von einer Euro-Banknote.
006 * <p>
007 * <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/felder.html#euronote">Zurück zum Aufgabentext</a>
008 * </p>
009 *
010 * @author Christian Pape
011 */
012 public class Euronote {
013
014 /**
015 * Gibt die Prüfziffer der Seriennummer einer
016 * Euro-Banknote zurück. Der führend Buchstabe
017 * muss gross geschrieben werden.
018 * Die Länge des Felds muss 12 sein.
019 * Die Seriennummer ist in umgekehrter Reihenfolge
020 * im Feld, d.h. der Buchstabe ist an Position 0.
021 *
022 * @param seriennummer Euro-Banknoten-Seriennummer (Beispiel U 4117793466 2)
023 */
024 public int getPruefziffer(char [] seriennummer) {
025 int landkennung = seriennummer[0] - 'A' + 1;
026 int quersumme = landkennung % 10 + landkennung / 10;
027 int pruefziffer = 0;
028
029 for (int i = 1; i <= 10; i++) {
030 quersumme += seriennummer[i] - '0';
031 }
032
033 pruefziffer = 8 - quersumme % 9;
034
035 if (pruefziffer == 0) {
036 pruefziffer = 9;
037 }
038
039 return pruefziffer;
040 }
041 }