EAN-Prüfziffer Java Programmierung?

3 Antworten

Über alle Zeichen iterieren bis auf die Prüfziffer.

Position mit Modulo 2, damit man weiss ob man mit 1 oder 3 multiplizieren muss.

Während der Iteration Summe bilden.

Die Gesamtsumme am Ende mit Modulo 10. Das ergibt die erwartete Prüfziffer.

Die erwartete Prüfziffer mit der tatsächlichen Prüfziffer vergleichen.

Fertig.

Multiplizieren bedeutet aber was anderes...

Beispiel: EAN=5449000096241

43 + 21 + 63 + 91 + 03 + 01 + 03 + 01 + 93 + 41 + 43 + 51

= 12 + 2 + 18 + 9 + 0 + 0 + 0 + 0 + 27 + 4 + 12 + 5

89

5*1 = 5

4*3 = 12

4*1 = 4

also 5+12+4+... 

Wie kommst du auf 43?

PS: Ich kenne/kann das  nicht, wollte aber immer mal schauen wie das klappt. Danke schön xD

Also erst einmal

// Der Ausdruck zeichen[i] - '0' liefert eine Ziffer.

Autsch! Das war mal zu C-Zeiten so. Nicht umsonst gibt es die Integer.valueOf()-Methode! Also Finger weg von solch althergebrachtem Blödsinn.

Außerdem geht es bei der Berechnung nicht um den Zahlenwert, sondern um den ASCII-Code des Zeichens. Somit bringt diese Information auch nichts.

Du musst jetzt eben einfach die einzelnen Zeichen durchlaufen und entsprechend aufsummieren:

int prüfsumme = 0;
boolean byThree = true;
for (int i = zeichen.length - 2; i >= 0; i++)
{
  byte ascii = (byte)zeichen[i];
  if (byThree)
  {
    prüfsumme += ascii * 3;
    byThree = false;
  }
  else
  {
    prüfsumme += ascii;
    byThree = true;
  }
}

int prüfZiffer = 10 - (prüfsumme % 10);

Jetzt musst Du nur noch prüfen, ob das letzte Zeichen im EAN-Code prüfZiffer.toString() entspricht.