Dae pessoal, como não achei uma classe em java pra fazer a validação de códigos de barra EAN 8 e EAN 13 resolvi faze-la.
Quem precisar tá na mão!
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;
}
}
Abraço!!
Giu
foi de grande ajuda, valeu!
morilo
Agosto 31, 2012, 9:22am
#3
Olá, seu código foi de grande ajuda, tive apenas que fazer um pequeno ajuste quanto ao RESTO zero, mas o restante está perfeito.
Só para agradecer! Acabei de usar aqui!
rogfoz
Setembro 23, 2014, 11:50pm
#5
Poderia me dar uma ajuda, como uso esse código pra validar um código ean?
fbreda
Janeiro 13, 2015, 6:50pm
#7
[quote=giulianon]Dae pessoal, como não achei uma classe em java pra fazer a validação de códigos de barra EAN 8 e EAN 13 resolvi faze-la.
Quem precisar tá na mão!
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;
}
}
Abraço!!
Giu[/quote]
Maravilha de código. Muito obrigado !
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.
conseguiu man? todos exemplos que achei na internet sempre tem uma falha.