Fórum validação de cpf #402179

02/06/2011

0

to usando esse codigo pra validar cpf em uma classe de validações que criei     public static boolean ValidarCPF(String cpf) {
        char dig10, dig11;
        int s, i, r, num;
        if (cpf.equals("00000000000") || (cpf.length() != 11)) {
            return (false);
        }
        try {
            s = 0;
            for (i = 0; i < 9; i++) {
                num = (int) (cpf.charAt(i) - 48);
                s = s + (num * (10 - i));
            }
            r = 11 - (s & 11);
            if ((r == 10) || (r == 11)) {
                dig10 = '0';
            } else {
                dig10 = (char) (r + 48);
            }
            s = 0;
            for (i = 0; i < 10; i++) {
                num = (int) (cpf.charAt(i));
                s = s + (num * (11 - i));
            }
            r = 11 - (s & 11);
            if ((r == 10) || (r == 11)) {
                dig11 = '0';
            } else {
                dig11 = (char) (r + 48);
            }
            if ((dig10 == cpf.charAt(9)) && (dig11 == cpf.charAt(10))) {
                return (true);
            } else {
                return (false);
            }         } catch (InputMismatchException erro) {
            return (false);
        }
    }   e na classe repositorio estou colocando esse    public static void main(String[] args) {
        Scanner ler = new Scanner(System.in);
        String cpf;
        System.out.printf("Informe um CPF:");
        cpf = ler.next();
        if (Funcoes.ValidarCPF(cpf) == true) {
            System.out.printf("\n&s\n", Funcoes.ValidarCPF(cpf));
        } else {
            System.out.printf("\nErro: CPF invalido!!!\n");
        }
    }             agora na classe principal a de cadastro cliente eu não to sabendo como para que ele possa validar o cpf estou colocando assim   public CadastroCliente() {
        initComponents();
        Funcoes.centralizeFrame(this);
        Funcoes.ValidarCPF(cpf.getText());                        cpf.setText("075.068.057-07");      private void botaoInserirActionPerformed(java.awt.event.ActionEvent evt) {                                             
               try {
            Cliente cliente = new Cliente();
            cliente.setCpf(cpf.getText());               RepositorioCliente.obterInstancia().inserir(cliente);            cpf.setText("");             private void botaoPesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                               
               ArrayList<Cliente> lista = this.listaCliente;
        for (int i = 0; i < lista.size(); i++) {            cpf.setText(cpf.getText());   isso ai é a perte q sto fazendo pra cpf so q a função ñ esta funcionado se puder me ajudar        
Lu

Lu

Responder

Posts

02/06/2011

Robson Teixeira

olá lucynha   no seu metodo botaoInserirActionPerformed tente assim   private void botaoInserirActionPerformed(java.awt.event.ActionEvent evt) {         try {
            Cliente cliente = new Cliente();
            cliente.setCpf(cpf.getText());            if(Funcoes.ValidarCPF(cpf)){             RepositorioCliente.obterInstancia().inserir(cliente);         }else{         // dentro desse else crie uma logica para enviar uma mensagem de erro para o usuario indicando que o cpf está incorreto          }     qualquer coisa é so chamar att  robson           
Responder

Gostei + 0

02/06/2011

Davi Costa

Ok então, vc pode fazer sua validação via regex e chamar o método como o Robson citou acima.

Veja esse links (O primeiro link já resolve):

http://redefoks.googlecode.com/svn/tags/Entities3.1/test/model/validadores/CepValidador.java
http://www.igorescobar.com/blog/tag/regex/
http://www.guj.com.br/java/114510-como-verificar-se-o-cep-e-valido--atraves-dos-correios--resolvido
http://www.linhadecodigo.com.br/dica/1280/Express%C3%B5es-RegularesPHP.aspx
http://codigofonte.uol.com.br/codigo/js-dhtml/validacao/validar-cep-usando-expressao-regular


Agora se eseu sistema for web a melhor saída é validar no formulário via javaScript, o usuário não teria que esperar a requisição ir no servidor e voltar com a resposta. Não se esqueça performance performance performance.


Att Davi
Responder

Gostei + 0

02/06/2011

Lu

da forma que vc colocou eu fiz so q ele fico pedindo pra criar um metodo if(Funcoes.ValidarCPF(cpf)){ de cep e qndo faço isso fica dando todos os cpfs invalidos
Responder

Gostei + 0

02/06/2011

Lu

pedi para criar outro metodo na class repositorio.   ok vo olhar agora davi
Responder

Gostei + 0

02/06/2011

Davi Costa

import java.io.Serializable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CepValidador{

private final String reg = "[0-9]\\-[0-9]";

public boolean isValid(String cep) {
boolean result = true;

if (cep == null) {
result = true;
} else {
Pattern pattern = Pattern.compile(reg);
Matcher match = pattern.matcher(cep);
result = match.matches();
}
return result;
}
}


Att Davi
Responder

Gostei + 0

03/06/2011

Lu

foi mau eu digitei a palavra errada eu quis dizer q quando eu vo usar a função no cadastro cliente, ele reconhece a função e tal, so q o CPF da função ñ, fica pedindo pra criar um outro metodo de CPF. se puder me falar o pq
agradeço
Responder

Gostei + 0

03/06/2011

Davi Costa

Não sei se vc fez a refatoração que eu sugeri, mas vamos fazer o seguinte, me posta a classe que tem o método de validação do cpf e posta o código que deveria usá-lo para validar.

Att Davi
Responder

Gostei + 0

03/06/2011

Lu

 public static boolean ValidarCPF(String CPF) {
        char dig10, dig11;
        int s, i, r, num;
        if (CPF.equals("00000000000") || (CPF.length() != 11)) {
            return (false);
        }
        try {
            s = 0;
            for (i = 0; i < 9; i++) {
                num = (int) (CPF.charAt(i) - 48);
                s = s + (num * (10 - i));
            }
            r = 11 - (s & 11);
            if ((r == 10) || (r == 11)) {
                dig10 = '0';
            } else {
                dig10 = (char) (r + 48);
            }
            s = 0;
            for (i = 0; i < 10; i++) {
                num = (int) (CPF.charAt(i));
                s = s + (num * (11 - i));
            }
            r = 11 - (s & 11);
            if ((r == 10) || (r == 11)) {
                dig11 = '0';
            } else {
                dig11 = (char) (r + 48);
            }
            if ((dig10 == CPF.charAt(9)) && (dig11 == CPF.charAt(10))) {
                return (true);
            } else {
                return (false);
            }

        } catch (InputMismatchException erro) {
            return (false);
        }
    }

    
Responder

Gostei + 0

03/06/2011

Lu

stou usando a classe
public class Funcoes {
Responder

Gostei + 0

03/06/2011

Davi Costa

private void botaoInserirActionPerformed(java.awt.event.ActionEvent evt) {  
      try {
            Cliente cliente = new Cliente();
            cliente.setCpf(cpf.getText()); 
 
         if(Funcoes.ValidarCPF(cliente.getCpf())){
            RepositorioCliente.obterInstancia().inserir(cliente);
        }else{
        // dentro desse else crie uma logica para enviar uma mensagem de erro para o usuario indicando que o cpf está incorreto 
        }



Att Davi
Responder

Gostei + 0

03/06/2011

Lu

ele ñ da mais o erro so q ele tambem ele salva mesmo sendo invalido
Responder

Gostei + 0

03/06/2011

Lu

ele ñ da mais o erro, so q tambem sta salva mesmoo cpf sendo invalido
Responder

Gostei + 0

03/06/2011

Lu

o exemplo q eu stava vendo foi nesse site ai http://uouinfo.com.br/novo/?p=836
Responder

Gostei + 0

03/06/2011

Davi Costa

me manda o exemplo do cpf que vc testou.
Que tal usar a solução do regex?

Att Davi
Responder

Gostei + 0

03/06/2011

Lu

regex? cm funciona? 
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar