Ola galera realmente esse método e muito interessante para quem trabalha com codigo de barra EAN13, porem tem um problema!!!
Quando digito os 13 dígitos com sequencia de números pares únicas por exemplo: 0000000000000,2222222222222 ou … ele aceita. Como resolvo este problema para ele não aceitar?
Obrigado.
public boolean isValidBarCodeEAN(String barCode) {
int digit;
int calculated;
String ean;
String checkSum = "131313131313";
int sum = 0;
if (barCode.length() == 8 || barCode.length() == 13) {
digit = Integer.parseInt("" + barCode.charAt(barCode.length() - 1));
ean = barCode.substring(0, barCode.length() - 1);
for (int i = 0; i <= ean.length() - 1; i++) {
sum += (Integer.parseInt("" + ean.charAt(i))) * (Integer.parseInt("" + checkSum.charAt(i)));
}
calculated = 10 - (sum % 10);
return (digit == calculated);
} else {
return false;
}
}