[Problema] Verificação de CPF com MASK FORMATTER

3 respostas
A

Bem galera, estou fazendo um programa para validação de um CPF, usando interface gráfica e também o maskformatter!

Para formatar o campo de inserção do JFText usei o seguinte código

#        try{  
#   
#            javax.swing.text.MaskFormatter format_jFCPF= new javax.swing.text.MaskFormatter("###.###.###-##");  
#   
#            jFCPF = new javax.swing.JFormattedTextField(format_jFCPF);  
#   
#         }catch (Exception e){}

Esse código funcionou perfeitamente! porém ele recebe esses dados! e agora eu teria que usar a fórmula matemática de validação de CPF e estou tento probléma nisso!!!

Como eu sei que meu jFCPF vai pegar aquilo que foi digitado nele e levar para o meu "cpf", os caracteres como "." e "-" também vão ser transferidos....então pensei nessa solução para transferir apenas os numeros digitados

public void verificaDado(){
		CPF cpf1 = new CPF();
		cpf1.setCPF(jFCPF.getText());
		int cases[] = new int [11]; //os 11 numeros que formam o cpf//
		int dig1, dig2;
		int x;
		for(x = 0;x>=3;x++){
			cases[x] = Integer.parseInt(cpf1.getCPF().substring(x,x+1)); //transferem os 3 primeiros numeros do cpf antes do "." para o vetor//
		}
		for(x = 4;x>=7;x++){
			cases[x] = Integer.parseInt(cpf1.getCPF().substring(x,x+1)); //transferem os 3 primeiros numeros do cpf antes do segundo "." para o vetor//
		}
		for(x = 8;x>=11;x++){
			cases[x] = Integer.parseInt(cpf1.getCPF().substring(x,x+1)); //transferem os 3 primeiros numeros do cpf antes do "-" para o vetor//
		}
                int y = 10, somacpf = 0;
		for(x=0;x<9;x++){
			somacpf = somacpf*(cases[x]*y) //fazer a somatoria dos 9 primeiros digitos do cpf//
			y--;
		}


        }
e depois dessas linhas de codigo uso o JoptionPane.showMessageDialog(null,somacpf); Para mostrar o resultado obtido, porem o programa inicializa e quando aperto o botão de verificar acontecem vários erros, gostaria de saber o que eu fiz de errado nesse caso. Desde já, obrigado Adam Paulo

3 Respostas

L

Ola Adamgnr !

Provavelmente seus erros se encontram no for…
até mesmo por que nesse for:

for(x = 0;x>=3;x++){  
         cases[x] = Integer.parseInt(cpf1.getCPF().substring(x,x+1)); //transferem os 3 primeiros numeros do cpf antes do "." para o vetor//  
     }

o teu codigo nao vai pegar os 3 primeiros caracteres, ateh mesmo porque a tua condição no for ta errada, a condição para ele pegar os 3 primeiros indices do vetor seria assim:

for(x = 0;x < 3;x++){
//    e o que voce quizer trabalhar nos primeiros 3 indices do seu vetor !
}

Te aconcelho a da uma olhada melhor em laço de repetição e nessas condições fazer tipo um teste de mesa, como se voce fosse o compilador.

ee mais uma coisa, ao inves de usar o for, voce podeira usar o metodo replaceAll da classe string. e quem sabe um parse pra integer ee pronto, voce utiliza os numeros como bem entender !

ex:

public class Example{
    public static void main(String args[]{
         String cpf = "[CPF removido]";
         cpf.replaceAll("[^0-9]","");
         System.out.println("Cpf sem pontos: "+cpf);
    }
}

Abraço

A

A questão do for eu vi que tinha errado assim que postei aqui, mas o erro persiste em dar, vou tentar usar o replace all e vamos ver o que acontece!

A

A questão do replace funcionou perfeitamente, muito obrigado

Criado 10 de novembro de 2010
Ultima resposta 10 de nov. de 2010
Respostas 3
Participantes 2