Estou precisando de uma rotina de validação de CNPJ. Quem tiver uma, por favor, responda.
Validação de CNPJ
B
4 Respostas
A
testa esse aqui…
download
D
Aqui está uma classe simple que verifica os digitos validadores:
/*
* CnpjValidator.java
*
/
package pfe.servlet.aidf.tools;
public class CnpjValidator {
private static String cnpj;
/* Creates a new instance of CnpjValidator */
private CnpjValidator() {}
public CnpjValidator(String cnpj){
this.cnpj = cnpj;
}
public boolean isValid() {
return validate();
}
public static boolean isValid(String cnpj) {
return new CnpjValidator(cnpj).isValid();
}
private boolean validate() {
try {
int[] numeros = cleanCnpj(cnpj);
try {
if(numeros[15] != 0) {
System.out.println("Tamanho do cnpj inválido");
return false;
}
} catch (Exception e){
// Aqui o numero é válido pois o tamanho não é maior que o formal
}
int soma1 = primeiraSoma(numeros);
int resto = soma1 % 11;
int digito1 = resto < 2 ? 0 : 11 - resto;
int soma2 = segundaSoma(numeros);
resto = soma2 % 11;
int digito2 = resto < 2 ? 0 : 11 - resto;
return ((numeros[12] == digito1) && (numeros[13] == digito2));
} catch (ArrayIndexOutOfBoundsException erro) {
System.out.println("Tamanho do cnpj inválido");
} catch (Exception erro) {
erro.printStackTrace();
}
return false;
}
private int primeiraSoma(int[] numeros)
throws Exception {
int soma = (numeros[0] * 5) + (numeros[1] * 4) +
(numeros[2] * 3) + (numeros[3] * 2) +
(numeros[4] * 9) + (numeros[5] *+
(numeros[6] * 7) + (numeros[7] * 6) +
(numeros[8] * 5) + (numeros[9] * 4) +
(numeros[10] * 3) + (numeros[11] * 2);
return soma;
}
private int segundaSoma(int[] numeros)
throws Exception {
int soma = (numeros[0] * 6) + (numeros[1] * 5) +
(numeros[2] * 4) + (numeros[3] * 3) +
(numeros[4] * 2) + (numeros[5] * 9) +
(numeros[6] *+ (numeros[7] * 7) +
(numeros[8] * 6) + (numeros[9] * 5) +
(numeros[10] * 4) + (numeros[11] * 3) +
(numeros[12] * 2);
return soma;
}
private int[] cleanCnpj(String cnpj)
throws Exception {
int[] numeros = new int[cnpj.length()];
int j = 0;
for(int i = 0; i < cnpj.length(); i++) {
char letra = cnpj.charAt(i);
if( letra != ´.´ && letra != ´/´ && letra != ´-´)
numeros[j++] = Integer.parseInt(String.valueOf(letra));
}
return numeros;
}
}
Quem sabe vc consiga melhorá-la
M
Preciso de qual o logica de validacao, sera que alguem consegue um link pra mim… (traduzi o codigo mas nao ficou bem claro ainda)
Valeu
A
Cara simplesmente faça o seguinte
CnpjValidator cnpj = new CnpjValidator("984949849849"); // CNPJ entre aspas
boolean bol = cnpj.isValid();
/*
Se bol = true, o cnpj é válido, caso contrário é inválido!
*/
[]´s
Dalton
[ Esta mensagem foi editada por: aspirante em 20-11-2002 13:51 ]
Criado 25 de junho de 2002
Ultima resposta 25 de jun. de 2002
Respostas 4
Participantes 4
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo