[quote=Karol][quote=rodolfo_b_g][quote=Karol][code][quote=rodolfo_b_g][quote=Karol][quote=rodolfo_b_g]não sei se isso ajuda mais segue o código de validar cpf… no caso vc usuário um JOptionPane.showImputDialog pra pegar a string do cpf e jogar nesse método para validação…
[code]public boolean validaCpf(String cpf)
{
int soma = 0;
try {
Long.parseLong(cpf);
} catch (Exception e) {
file://erro = new FrameMensagens(“Clientes - Erro:” , “Somente números
são permitidos”);
cpfCliente.requestFocus();
return false;
}
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’)) {
file://erro = new FrameMensagens(“Clientes - Erro:” ,
“CPF Válido”);
return true;
}
}
}
file://erro = new FrameMensagens(“Clientes - Erro:” , “CPF
Inválido”);
return false;
}
[/code][/quote]
Olá tudo bom?
Eu sou nova aqui no forum e estava procurando por validação de CPF e acabei achando este seu post
e esse é o mesmo código que eu estou usando no meu programa só que eu estou com um problema com ele
porque ele só me retorna a mensagem de CPF inválido, mesmo que eu coloque um CPF válido no campo
você teria alguma idéia do que poderia estar causando este problema? O código é exatamente o mesmo de cima.
Valeu pela atenção!!![/quote]
bom eu nao uso ele com as mensagens e sim no retorno, quando valdio TRUE e quando invalido FALSE … se puder postar seu código pra ver se realmente ta igual e como vc esta usando ele talvez posso ajduar masi rapido…pq nao tive problemas em usar esse ae[/quote]
Bom o meu código esta assim:
eu chamo o método no evento focusLost do meu JTextField e chamo ele assim:
private void jtfCpfClienteFocusLost(java.awt.event.FocusEvent evt) {
validarCpf(jtfCpfCliente.getText());
}
esse método chama esse código:
public boolean validarCpf(String cpf) {
int soma = 0;
try {
Long.parseLong(cpf);
} catch (Exception e) {
jtfCpfCliente.requestFocus();
}
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’)) {
JOptionPane.showMessageDialog(null, “CPF Válido”);
return true;
}
}
}
JOptionPane.showMessageDialog(null, “CPF Inválido”);
return false;
}
espero que isto possa te ajudar a entender o que está acontecendo.
Obrigada desde já.[/quote]
bom acho q ja sei pq…por acaso vc esta informando o cpf com ponto? esse validador soh valida cpf q tiver apenas os numeros por exe: 111-111-111-11 fica 11111111111 dae sim ele vai validar…
nesse trecho do codigo ele valida se apenas numeros foram informados vc pode colocar pra exibir mensagem
try {
Long.parseLong(cpf);
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Somente números são permitidos","ERRO",JOptionPane.ERROR_MESSAGE);
jtfCpfCliente.requestFocus();
return false;
}
testa e me fala se deu certo…abraçoss[/quote]
Foi bem como vc disse, sem os pontos ele funciona, só que no meu caso eu estava utilizando uma mascara
no campo de CPF, eu nem digitava os pontos ele ja pegava os q tinha na mascara.
Ele funciona beleza assim mas vc não saberia uma forma q eu pudesse usar ele em um campo mascarado,
modificando alguma coisa nele ou utilizando outro codigo q aceite pontos para fazer a validação.
Abraços!!![/quote]
Entendi, então oq vc pode fazer e limpar os caracteres q não forem numeros da string antes de validar e passar esse string limpa para a validação do cpf…segue o código de como ficaria… obs: montei isso no bloco de notas portanto não sei se as funções estão todas corretas… mas é mais ou menos por ai… espero ajudar :lol:
[code]private void jtfCpfClienteFocusLost(java.awt.event.FocusEvent evt) {
String cpfLimpo;
cpfLimpo = LimparCpf(jtfCpfCliente.getText());
validarCpf(cpfLimpo);
}
public String LimparCpf(String cpf){
String numeros =“0123456789”;
String cpfLimpo;
for(i=0; i<cpf.length; i++){
if (numeros.indexOf(cpf.charAt(i),0)!=-1){
cpfLimpo = cpfLimpo + cpf.charAt(i);
}
}
return cpfLimpo;
}[/code]>