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.