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    }