quinta-feira, 28 de maio de 2009

Classe utilitaria Valida Cpf e Cnpj

Arquivo:CnpjCpf.java
Não esqueçam de incluir o pacote

package seupacote;

public class CnpjCpf {
/**
*
* @param str_cnpj cnpj a ser verificado
*
* @return se o valor for "" ou o cnpj for verdadeiro retorna true
*/
static public boolean VALIDACNPJ(String str_cnpj) {
str_cnpj = Strings.substituirTrechos(new String[]{"-", "/", "."}, "", str_cnpj.trim()).trim();

if (str_cnpj.equals("")) {
return true;
}

int soma = 0, aux, dig;
String cnpj_calc = str_cnpj.substring(0, 12);

if (str_cnpj.length() != 14) {
return false;
}
char[] chr_cnpj = str_cnpj.toCharArray();

/* Primeira parte */
for (int i = 0; i <>= 0 && chr_cnpj[i] - 48 <= 9) { soma += (chr_cnpj[i] - 48) * (6 - (i + 1)); } } for (int i = 0; i <>= 0 && chr_cnpj[i + 4] - 48 <= 9) { soma += (chr_cnpj[i + 4] - 48) * (10 - (i + 1)); } } dig = 11 - (soma % 11); cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig); /* Segunda parte */ soma = 0; for (int i = 0; i <>= 0 && chr_cnpj[i] - 48 <= 9) { soma += (chr_cnpj[i] - 48) * (7 - (i + 1)); } } for (int i = 0; i <>= 0 && chr_cnpj[i + 5] - 48 <= 9) {
soma += (chr_cnpj[i + 5] - 48) * (10 - (i + 1));
}
}
dig = 11 - (soma % 11);
cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);

return str_cnpj.equals(cnpj_calc);
}

public static boolean VALIDACPF(String cpf) {
int d1, d2;
int digito1, digito2, resto;
int digitoCPF;
String nDigResult;

cpf = Strings.substituirTrechos(new String[]{"-", "/", "."}, "", cpf.trim());

if (cpf.trim().equals("")) {
return true;
}

if (cpf.length() != 11) {
return false;
}

d1 = d2 = 0;
digito1 = digito2 = resto = 0;

for (int nCount = 1; nCount < cpf.length() - 1; nCount++) {
digitoCPF = Integer.valueOf(cpf.substring(nCount - 1, nCount)).intValue();

//multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.
d1 = d1 + (11 - nCount) * digitoCPF;

//para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.
d2 = d2 + (12 - nCount) * digitoCPF;
}
;

//Primeiro resto da divisão por 11.
resto = (d1 % 11);

//Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
if (resto < 2) {
digito1 = 0;
} else {
digito1 = 11 - resto;
}
d2 += 2 * digito1;

//Segundo resto da divisão por 11.
resto = (d2 % 11);

//Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
if (resto < 2) {
digito2 = 0;
} else {
digito2 = 11 - resto; //Digito verificador do CPF que está sendo validado.

}
String nDigVerific = cpf.substring(cpf.length() - 2, cpf.length());

//Concatenando o primeiro resto com o segundo.
nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

//comparar o digito verificador do cpf com o primeiro resto + o segundo resto.
return nDigVerific.equals(nDigResult);
}

public static void main(String[] args) {
System.out.println(VALIDACNPJ("02998301000181") ? "OK" : "Incorreto");
}
}

Nenhum comentário:

Postar um comentário