Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução do Desafio

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

public class Main {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        Pattern pattern = Pattern.compile("^[A-Z]{3}[-][0-9]{4}$");

        System.out.print("Digite o codigo de referência:");
        String codigoReferencia = scanner.nextLine();
        Matcher matcher = pattern.matcher(codigoReferencia);

        if (matcher.find()){
            System.out.println("O código de referência está válido.");
        } else {
            System.out.println("O código de referência é inválido.");
        }

        scanner.close();

    }

}


1 resposta

Olá, Pablo! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o Scanner para capturar entrada do usuário em Java, utilizou muito bem o Regex com Pattern e Matcher para validar o formato do código e ainda compreendeu a importância da condicional clara para indicar se o valor digitado está dentro do padrão esperado.

Uma dica interessante para o futuro é usar matcher.matches() em vez de matcher.find(), já que matches() garante que toda a string corresponda ao padrão, evitando falsos positivos. Assim:

if (matcher.matches()) {
    System.out.println("O código de referência está válido.");
} else {
    System.out.println("O código de referência é inválido.");
}

Isso faz com que a validação seja mais precisa e confiável.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Tratar exceções: garantir que entradas nulas ou vazias não causem erros.
  • Encapsular em função: criar um método validarCodigo(String codigo) para reutilizar a lógica.
  • Adicionar mensagens de ajuda: informar ao usuário qual formato é esperado (exemplo: ABC-1234).

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: o que você acha mais interessante evoluir neste código, permitir diferentes formatos de referência com regex mais flexíveis ou manter apenas este padrão fixo para reforçar a prática de validação?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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