5 de maio de 2012

Validação de CPF em JAVA

Vira e volta uma validação de C.P.F. é muito perguntado a mim. Para sanar esta necessidade vou postar aqui o "simples" código que faz essa verificação.

Antes de tudo, temos que entender a lógica do algoritmo de validação. Para considerarmos um C.P.F. correto, devemos apenas verificar se o DÍGITO VERIFICADOR, os dois últimos dígitos, serão criados pelo nosso algoritmo
O cálculo é muito chato, mas vamos lá:
1º Guarde a soma da multiplicação do nove primeiros termos do C.P.F. por uma variável que incrementa, começando por 1.
2º O primeiro dígito será o resto da divisão por 11 (% 11).
3º Zere a soma.
4º Guarde a soma da multiplicação dos nove primeiros termos concatenado com o digito encontrado por uma variavel que incrementa, começando por 0.
5º O segundo dígito será o resto da divisão por 11 (%11).
6º Verifique se os dígitos encontrados são iguais aos digitos do cpf informado.

Fácil? Na verdade é chato!!!! Tanto que nem vou fazer o código, apenas irei disponibilizado. =)

  1.  private static boolean validaCPF(String cpf) {  
  2.       boolean ret = false;  
  3.       String base = "000000000";  
  4.       String digitos = "00";  
  5.       if (cpf.length() <= 11) {  
  6.          if (cpf.length() < 11) {  
  7.             cpf = base.substring(011 - cpf.length()) + cpf;  
  8.             base = cpf.substring(09);  
  9.          }  
  10.          base = cpf.substring(09);  
  11.          digitos = cpf.substring(911);  
  12.          int soma = 0, mult = 11;  
  13.          int[] var = new int[11];  
  14.          // Recebe os números e realiza a multiplicação e soma.  
  15.          for (int i = 0; i < 9; i++) {  
  16.             var[i] = Integer.parseInt("" + cpf.charAt(i));  
  17.             if (i < 9)  
  18.                soma += (var[i] * --mult);  
  19.          }  
  20.          // Cria o primeiro dígito verificador.  
  21.          int resto = soma % 11;  
  22.          if (resto < 2) {  
  23.             var[9] = 0;  
  24.          } else {  
  25.             var[9] = 11 - resto;  
  26.          }  
  27.          // Reinicia os valores.  
  28.          soma = 0;  
  29.          mult = 11;  
  30.          // Realiza a multiplicação e soma do segundo dígito.  
  31.          for (int i = 0; i < 10; i++)  
  32.             soma += var[i] * mult--;  
  33.          // Cria o segundo dígito verificador.  
  34.          resto = soma % 11;  
  35.          if (resto < 2) {  
  36.             var[10] = 0;  
  37.          } else {  
  38.             var[10] = 11 - resto;  
  39.          }  
  40.          if ((digitos.substring(01).equalsIgnoreCase(new Integer(var[9])  
  41.                .toString()))  
  42.                && (digitos.substring(12).equalsIgnoreCase(new Integer(  
  43.                      var[10]).toString()))) {  
  44.             ret = true;  
  45.          }  
  46.       }
  47.   
  48.       return ret;  
  49.    }


Espero que tenham entendido,
Abraço.

Nenhum comentário:

Postar um comentário