Suche Java Hilfe

05/07/2015 17:27 Pfirsichlada#1
Hallo,

ich brauche einen Java-Code für folgendes Szenario:

Der Code eines Schiffscontainers ist wie folgt aufgebaut:

[Only registered and activated users can see links. Click Here To Register...]

4 Buchstaben + 6 Zahlen + 1 Zahl (Prüfziffer)

Der Java Code soll folgendes können:
Die Prüfziffer in der Containernummer ist auf Korrektheit zu prüfen. Der Anwender muss im Fehlerfall nach der korrekten Containernummer gefragt werden (die auch wieder zu prüfen ist). Die Prüfziffer wird wie folgt berechnet:

Die ersten 4 Buchstaben werden jeweils durch Zahlen ersetzt. Dabei wird das A durch die 10 ersetzt, und jeder im Alphabet folgende Buchstabe erhält eine um 1 größere Zahl, allerdings werden die 11,22 und 33 übersprungen.

Nun besteht die Containernummer nurnoch aus 10 Zahlen (ohne Prüfziffer). Diese werden jeweils mit aufsteigenden 2er-Potenzen multipliziert. Die erste Zahl also mit 2^0, die zweite mit 2^1, die nächste mit 2^2, und die letzte wird schließlich mit 2^9 multipliziert. Abschließend wird hierüber die Summe gebildet.

Diese Summe wird durch 11 geteilt und der Rest ermittelt. Dies ist/wäre die korrekte Prüfziffer. Ausnahme: Wenn man bei der Restberechnung eine 0 oder 10 erhält, wird in beiden Fällen die 0 als Prüfziffer verwendet.

Wer das kann und Lust hat das zu machen, soll mir einfach kurz einen Preis per Pn senden :)

Vielen Dank.

Gruß
05/07/2015 19:50 snow#2
Code:
public class Container {

    public static boolean check(String code) {
    
        char c[] = code.toCharArray();

        int sum = 0;
        for (int i = 0; i != 10; ++i) {

            int k = 0;
            if (i < 4) {
                
                k = c[i] - 'A' + 10;
                k += k / 11;
                
            } else {
                
                k = c[i] - '0';
            }
            
            sum += k * Math.pow(2, i);
        }

        int m = sum % 11; 
        return (m == 10 ? 0 : m) == (c[10] - '0');
    }

    public static void main(String []args) {
        
        System.out.println(check("SUDU3070079"));
    }
}
Dass bei falscher Eingabe erneut gefragt wird etc., darfst du selber machen. Solltest du das nicht schaffen, solltest du es besser mal hier: [Only registered and activated users can see links. Click Here To Register...]

#closed