Pesquisar este blog

quarta-feira, 16 de março de 2011

VALIDAÇÃO DE CPF -MÉTODO AUXILIAR: validaDigitosVerificadores

Este método tem por objetivo receber o CPF como String  e devolver  true se o CPF for válido e false  caso contrário.
Para realizar essa tarefa é necessário realizar o algoritmo correspondente.
Basicamente o método  lê como char cada dígito  individualmente através do método charAt(i)   da classe String  e em seguida  converte cada caractere para String. Novamente cada caractere é convertido para inteiro usando o método parseInt(aux1) da classe Integer.
Convertido em número o dígito é multiplicado por (10 –i). Na primeira rodada da repetição vale 0, portanto o dígito é multiplicado por 10.  O resultado é então somado ao valor da soma1. Na primeira rodada, soma1 vale 0, portanto em soma1 é guardado o valor 10, já que o dígito vale 1,
Para soma2 é similar exceto que é multiplicado por 11 em vez de 10, portanto é armazenado o valor 11 em soma2.
Na segunda rodada se repete o procedimento, exceto que agora soma1 e soma2 já tem o valor anterior  diferente de zero.
Esse processo se repete até varrer todos os dígitos.
Após isto, o método getDigito é chamado para calcular o valor do dígito verificador 1.
De posse do dígito verificador 1, o valor da soma2 é alterado de forma a  incluir o valor  do produto de div1*2 conforme solicitado no algoritmo. Ou seja o valor da soma2 depende do valor do dígito verificador 1.
Com o valor da soma2 pronto, o método getDigito é chamado novamente para calcular o dígito verificador 2.
De posse dos valores dos dígitos verificadores 1 e 2 ,basta comparar os valores calculado com os valores lidos. Se forem iguais, o método devolve true. Caso contrário , devolve fase.
Para  acessar o valor do dígito verificador 1  e 2 lidos , veja que foi usado uma linha de código que faz várias operações simultaneamente:
int div1Lido= Integer.parseInt(String.valueOf(str.charAt(10)));
onde charAt(10) acessa o caractere na posição 10 da String, ou seja o div1.
String.valueOf converte o  tipo char para String.
Integer.parseInt converte o  tipo String  para inteiro.
O sinal de =  atribui  o resultado à variável div1Lido.
Int define o tipo de dado, no caso inteiro.


Nenhum comentário:

Postar um comentário