Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ValidandoCodigosDeReferencia

package br.com.nadson.desafiosc4.modelo;



    public class ValidadorCodigoReferencia {

        public static String validarCodigo(String codigo) {

            try {
                if (codigo == null || codigo.isEmpty()) {
                    return "Erro: nenhum código foi informado.";
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }

            codigo = codigo.trim();

            if (codigo.length() != 8) {
                return "Erro: o código deve ter exatamente 8 caracteres (ex: ABC-1234).";
            }

            String letras = codigo.substring(0, 3);
            if (!validarLetras(letras)) {
                return "Erro: os 3 primeiros caracteres devem ser letras maiúsculas (A-Z).";
            }

            if (!validarHifen(codigo.charAt(3))) {
                return "Erro: o 4º caractere deve ser um hífen (-).";
            }

            String numeros = codigo.substring(4);
            if (!validarNumeros(numeros)) {
                return "Erro: os últimos 4 caracteres devem ser números (0-9).";
            }

            return "VÁLIDO";
        }

        private static boolean validarLetras(String texto) {
            return texto.matches("[A-Z]{3}");
        }

        private static boolean validarHifen(char c) {
            return c == '-';
        }

        private static boolean validarNumeros(String texto) {
            return texto.matches("[0-9]{4}");
        }
    }

package br.com.nadson.desafiosc4.principal;

import br.com.nadson.desafiosc4.modelo.ValidadorCodigoReferencia;

import java.util.Scanner;

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


            try (Scanner entrada = new Scanner(System.in)) {
                while(true){
                System.out.print("Digite o código de referência: ");
                String codigo = entrada.nextLine().trim();
                if (codigo.equalsIgnoreCase("fim")){
                    System.out.println("Finalizando programa...");
                    break;
                }

                String resultado = ValidadorCodigoReferencia.validarCodigo(codigo);

                if (resultado.equals("VÁLIDO")) {
                    System.out.println("O código de referência está válido.");
                } else {
                    System.out.println(resultado);
                }
            }}
        }
    }


2 respostas
solução!

Olá, Nadson! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de métodos auxiliares para validar cada parte do código de referência, utilizou muito bem o tratamento de entradas com Scanner para permitir múltiplas verificações e ainda compreendeu a importância das expressões regulares para garantir o formato correto.

Uma dica interessante para o futuro é tornar o retorno mais informativo, diferenciando mensagens de sucesso e erro com maior clareza. Assim:

String resultado = ValidadorCodigoReferencia.validarCodigo(codigo);

if (resultado.equals("VÁLIDO")) {
    System.out.println("✅ O código de referência está válido!");
} else {
    System.out.println("❌ " + resultado);
}

Isso faz com que a saída seja mais amigável e facilite a interpretação dos resultados pelo usuário.

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

Abraço e bons estudos!

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

obrigado pela dica vou me atentar para fazer retornos mais amigaveis