1
resposta

Minha solução do desafio :)

// CLASSE PRINCIPAL

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);

    System.out.println("Digite o CPF: ");
    String cpf = leitura.nextLine();

    ValidacaoDeCPF validacaoDeCPF = new ValidacaoDeCPF();

    validacaoDeCPF.verificarCPF(cpf);
    
    leitura.close();
}

}

//CLASSE ValidacaoDeCPF

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

public class ValidacaoDeCPF {

public void verificarCPF(String cpf){
    
    if (cpf.contains(".") && cpf.contains("-")) {
        cpf = cpf.replace(".", "");
        cpf = cpf.replace("-", "");
    }

    String regex = "(\\d{3})(\\d{3})(\\d{3})(\\d{2})";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(cpf);

    if (matcher.find()) {
        System.out.printf("O CPF \"%s.%s.%s-%s\" está no formato válido.", matcher.group(1), matcher.group(2), matcher.group(3), matcher.group(4));
    } else {
        System.out.printf("CPF INVALIDO");
    }

}

}

1 resposta

Oii, Davilayannick07! Tudo bem?

Agradeço por compartilhar seu código com a comunidade Alura.

Que legal ver você praticando! Dá pra perceber que você tá no caminho certo. Entender como as estruturas funcionam na prática é um passo muito importante pro aprendizado de programação.

Uma dica bacana: usar o método matches() da classe String, que permite validar diretamente se uma string segue um padrão regex, deixando o código mais simples.


String cpf = "12345678901";

if (cpf.matches("\\d{11}")) {
    System.out.println("cpf valido");
} else {
    System.out.println("cpf invalido");
}

Nesse código, matches() verifica se o texto possui exatamente 11 digitos numericos. Caso tenha, o programa considera o formato válido.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!