Validacao cpf

11 respostas
wellvsilva

Bom dia galera,
eh pq criei uma class utilLib para fazer a validacao do cpf e to chamando o metodo, tudo blz ja teste o metodo ta funcionando, so que qdo fui criar a condicao de chamamento do metodo axo q fiz algo erro, que so diz que todo cpf eh invalido, podem me da uma força ai e darem uma olhada do condigo pra ver onde ta o erro:

//@esta eh a class com o metodo
public class UtilLib {

public static boolean validarCPF(String cpf) {
    int soma = 0;
    if (cpf.length() == 11) {
        for (int i = 0; i < 9; i++) {
            soma += (10 - i) * (cpf.charAt(i) - '0');
        }
        soma = 11 - (soma % 11);
        if (soma > 9) {
            soma = 0;
        }
        if (soma == (cpf.charAt(9) - '0')) {
            soma = 0;
            for (int i = 0; i < 10; i++) {
                soma += (11 - i) * (cpf.charAt(i) - '0');
            }
            soma = 11 - (soma % 11);
            if (soma > 9) {
                soma = 0;
            }
            if (soma == (cpf.charAt(10) - '0')) {
                return true;
            }
        }
    }
    return false;
}

}

// este é onde to chamando o metodo pra verificar a validaçao do cpf
private void CadastrarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

cliente pincel = new cliente();
    pincel.cpf = JCPF.getText();
    pincel.endereco = Endereco.getText();
    pincel.nome = txtNome.getText();
    pincel.rg = RG.getText();
    pincel.telefone = Telefone.getText();
    pincel.cidade = Cidade.getText();
    pincel.cep = CEP.getText();
    pincel.estado = Estado.getText();
    //se n for valido
    if (UtilLib.validarCPF(pincel.cpf)) {
        JOptionPane.showConfirmDialog(null, "cpf inválido!");
    } else{
        pincel.cadastraCliente();
        txtNome.setText("");
        JCPF.setText("");
        Endereco.setText("");
        RG.setText("");
        Telefone.setText("");
        Cidade.setText("");
        CEP.setText("");
        Estado.setText("");
    }


}

11 Respostas

L

[color=red]obs( coloque seus codigos entre tags code /code[/color])

olha como eu falo aqui

package controller;




public class ValidaCPF {   


	public ValidaCPF() {   
	}   

	public static boolean validaCpf(String xCPF)   
	{   
		try  
		{   

			//Testa se o CPF é válido ou não   

			int d1,d4,xx,nCount,resto,digito1,digito2;   
			String Check;   
			String Separadores = "/-.";   
			d1 = 0; d4 = 0; xx = 1;   
			for (nCount = 0; nCount < xCPF.length() -2; nCount++)   
			{   
				String s_aux = xCPF.substring(nCount, nCount+1);   

				//System.out.println(s_aux);   

				if (Separadores.indexOf(s_aux) == -1) {   
					d1 = d1 + ( 11 - xx ) * Integer.valueOf (s_aux).intValue();   
					d4 = d4 + ( 12 - xx ) * Integer.valueOf (s_aux).intValue();   
					xx++;   
				};   
			};   
			resto = (d1 % 11);   
			if (resto < 2)   
			{   
				digito1 = 0;   
			}   
			else  
			{   
				digito1 = 11 - resto;   
			}   

			d4 = d4 + 2 * digito1;   
			resto = (d4 % 11);   
			if (resto < 2)   
			{   
				digito2 = 0;   
			}   
			else  
			{   
				digito2 = 11 - resto;   
			}   



			Check = String.valueOf(digito1) + String.valueOf(digito2);   

			String s_aux2 = xCPF.substring (xCPF.length()-2, xCPF.length());  

			//System.out.println(s_aux2);   
			//System.out.println(Check);   

			if (s_aux2.compareTo (Check) != 0)   
			{   

				return false;   
			}   
			return true;   
		}   
		catch (Exception e)   
		{   
			return false;   
		}   
	}   

}

chamando ele

String xCpf = cpf.getText();			
    					if (!ValidaCPF.validaCpf(xCpf)) {   						
    						JOptionPane.showMessageDialog(null, " Cpf Incorreto ! "); 
    					} else {   						
    						cpf.setBackground(Color.WHITE);
wellvsilva

A classe deu tudo certinho so que na hora de da dando erro no if e collor da uma olhada ai lokit"s:

//se n for valido
    /*if (UtilLib.validarCPF(pincel.cpf)) {
        JOptionPane.showConfirmDialog(null, "cpf inválido!");
    } else{*/
                                                                         String xCpf = JCPF.getText();
//clocque utilLib que é o nome da minha classe este nome utilLib ta sublinado de vermelho

if (!utilLib.validaCpf(xCpf)) {

JOptionPane.showMessageDialog(null, " Cpf Incorreto ! “);

} else {

pincel.cpf.setBackground(Color.WHITE); //assim como  o Color tb ta sublinado de vermelho

pincel.cadastraCliente();

txtNome.setText(”");

JCPF.setText("");

Endereco.setText("");

RG.setText("");

Telefone.setText("");

Cidade.setText("");

CEP.setText("");

Estado.setText("");

}
wellvsilva

Descupe a ignorancia pq sou novo no forum ainda to aprendendo a mexer, sou humilde em dizer minhas limitaçoes momentaneas

drigo.angelo

Quando for postar seu código, utilize a formatação do fórum por favor, como o amigo aí de cima falou.
Talvez este tópico ajude, caso não saiba a formatação.

L

cara colca isso assim:

se não conseguir segue meu exemplo poh , é tão facil

String xCpf = JCPF.getText(); 

if (!UtilLib.validarCPF(cpf)){ 

JOptionPane.showConfirmDialog(null, "cpf inválido!"); 

else{

JCPF.setBackground(Color.WHITE);

qualquer coisa posta dinovu à duvida flou!

Priuli

wellvsilva, segue uma dica. vc não precisamos reinventar a roda, não sei c é o seu caso, vc pode estar querendo apreender, mas c vc estiver querendo algumas coisas utilitarias(padrao) vc deve usar algum framework de utilitarios eu mesmo tem um, que disponibilizei chama-se OpenSutils-Br4J e lá tem função para validar cpf cnpj e muitas outras coisas, existe tb o proj da Caelum chamado Stella, tb tem da apache que tem uma serie de coisas uteis chamadas de commons o bom de usar tais libs é pq alguem já passou pelo problema já usou, corrigiu e testou e funciona…

Meu projeto:
http://www.guj.com.br/java/225445-opensutils-br4j—biblioteca-de-utilitarios-utils

Abrçs

wellvsilva

a classe ok, o problema agora é no chamamento desse metodo, no primiero momento a duvida era pq qdo ia cadastrar na Jpanel chamava a janela cadastrar qdo colocava o cpf mesmo q fosse valido o if so levava para a informaçao que o cpf era invalido nao deixava desviar ok. Peguei seu codigo coleque na minha classe UtilLib ate pq da pra enteder melhor. Agora testei seu ultimo post e apareceu algumas palavras grifadas segue abaixo:

private void CadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:

        cliente pincel = new cliente();
        pincel.cpf = JCPF.getText();
        pincel.endereco = Endereco.getText();
        pincel.nome = txtNome.getText();
        pincel.rg = RG.getText();
        pincel.telefone = Telefone.getText();
        pincel.cidade = Cidade.getText();
        pincel.cep = CEP.getText();
        pincel.estado = Estado.getText();
        
            String xCpf = JCPF.getText();   
      
    if (!UtilLib.validarCPF(cpf)){   // informa que cpf esta sublinado vermelho
      
    JOptionPane.showConfirmDialog(null, "cpf inválido!");   
      
    else{     //tb aki informa algo errado que nao o que eh ainda
      
    JCPF.setBackground(Color.WHITE);              // o nome Color tb ta vermelho                 



            pincel.cadastraCliente();
            txtNome.setText("");
            JCPF.setText("");
            Endereco.setText("");
            RG.setText("");
            Telefone.setText("");
            Cidade.setText("");
            CEP.setText("");
            Estado.setText("");
        }


    }                                         
    // Variables declaration - do not modify                     
    private javax.swing.JFormattedTextField CEP;
    private javax.swing.JLabel CPF;
    private javax.swing.JButton Cadastrar;
    private javax.swing.JTextField Cidade;
    private javax.swing.JTextField Endereco;
    private javax.swing.JTextField Estado;
    private javax.swing.JFormattedTextField JCPF;
    private javax.swing.JLabel JCep;
    private javax.swing.JLabel JCidade;
    private javax.swing.JLabel JEndereco;
    private javax.swing.JLabel JEstado;
    private javax.swing.JLabel JTelefone;
    private javax.swing.JLabel Nome;
    private javax.swing.JTextField RG;
    private javax.swing.JFormattedTextField Telefone;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel tRG;
    private javax.swing.JTextField txtNome;
    // End of variables declaration
}

Lembrando que a class ta ok

desde de ja agradeço a ajuda de todos

wellvsilva

lokit"s peguei seu exemplo sim

este ai de cima da uma olhada sua classe ja peguei, mas no chamamento aparece alguns erros da uma olhada ai no codigo acima

e valeu

L
well

se vc pegou meu codigo de validação faça desse jeito então >>>>

String xCpf = JCPF.getText();   
          
 (!ValidaCPF.validaCpf(xCpf)) {  
                         
JOptionPane.showMessageDialog(null, " Cpf Incorreto ! ");   

}else {   
                        
JCPF.setBackground(Color.WHITE);

ve se dá certo agora!

wellvsilva

lokit"s , valeu deu certo agora o que na verdade tava faltando era importa o java.awt.Color

vlw pela força muito obrigado mesmo, seu corpo ta mais legivel do que akele meu outro,

a gente aprende assim com a ajuda de outros desenvolvedores

flw e obrigado tb a todos que me deram a dicas de como postar meus codigos

L

[email removido:
]lokit"s , valeu deu certo agora o que na verdade tava faltando era importa o java.awt.Color

vlw pela força muito obrigado mesmo, seu corpo ta mais legivel do que akele meu outro,

a gente aprende assim com a ajuda de outros desenvolvedores

flw e obrigado tb a todos que me deram a dicas de como postar meus codigos

opa brother demoro…pode perguntar que nós ajudaremos

[color=red]uma dica pra vc as vezes eu aperto CTRL+SHIFT+O e ja aparece os imports[/color]

abrxx

Criado 17 de março de 2011
Ultima resposta 17 de mar. de 2011
Respostas 11
Participantes 4