Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Implementar um verificador de CPF em um cadastro

Metodo de verificação:

public class VerificadorCpf {
    public boolean verificarCpfComPontuacao(String cpf) {
        // Remover pontuação do CPF
        cpf = cpf.replace(".", "");
        cpf = cpf.replace("-", "");

        // Verificar se o tamanho do CPF é válido (11 dígitos)
        if (cpf.length() != 11) {
            return false;
        }

        // Realizar cálculo de verificação dos dígitos
        int soma = 0;
        int peso = 10;
        for (int i = 0; i < 9; i++) {
            soma += Integer.parseInt(cpf.charAt(i) + "") * peso;
            peso--;
        }

        int digito1 = 11 - (soma % 11);
        if (digito1 > 9) {
            digito1 = 0;
        }

        soma = 0;
        peso = 11;
        for (int i = 0; i < 10; i++) {
            soma += Integer.parseInt(cpf.charAt(i) + "") * peso;
            peso--;
        }

        int digito2 = 11 - (soma % 11);
        if (digito2 > 9) {
            digito2 = 0;
        }

        // Verificar se os dígitos de verificação são válidos
        return (digito1 == Integer.parseInt(cpf.charAt(9) + "") && digito2 == Integer.parseInt(cpf.charAt(10) + ""));
    }
}

Metodo de cadastro:

 public void cadastroContaMembro() {
        try {
            ContaMembro contaMembro = new ContaMembro();
            Membro membro = new Membro();
            Endereco endereco = new Endereco();
            membro.setNome(JOptionPane.showInputDialog("Nome: "));

            int idade;
            boolean idadeValida = false;
            while (!idadeValida){
                idade = Integer.parseInt(JOptionPane.showInputDialog("Idade: "));
                if (verificadorIdade.verificarIdade(idade)){
                    membro.setIdade(idade);
                    break;
                }

            }

            String cpf;
            boolean cpfValido = false;
            while (!cpfValido) {
                cpf = JOptionPane.showInputDialog("CPF: ");
                if (verificadorCpf.verificarCpfComPontuacao(cpf)) {
                    membro.setCpf(cpf);
                    cpfValido = true;
                } else {
                    JOptionPane.showMessageDialog(null, "CPF inválido. Por favor, digite novamente.");
                }
            }

Como implementar esse metodo sem precisar fazer esse laço, estou sem saber o que fazer pois preciso que quando o cpf for digitado de uma forma errada, volte a opção de digitar novamente, a unica forma que consegui foi essa mais sei que não é uma boa pratica.

1 resposta
solução!

Olá Bruno, tudo bem?

Você poderia criar uma classe CpfInvalidoException e lançá-la no método verificarCpfComPontuacao quando o CPF não for válido.No método cadastroContaMembro, você poderia colocar o trecho que pede para o usuário digitar o CPF dentro de um bloco try-catch, e tratar a exceção lançada caso o CPF seja inválido.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software