1
resposta

[Projeto] Desafio - Aula 1

Olá!

Segue minha resolução:

public enum Mes {

    JANEIRO(31),
    FEVEREIRO(28),
    MARCO(31),
    ABRIL(30),
    MAIO(31),
    JUNHO(30),
    JULHO(31),
    AGOSTO(31),
    SETEMBRO(30),
    OUTUBRO(31),
    NOVEMBRO(30),
    DEZEMBRO(31);

    private int numeroDeDias;

    Mes(int numeroDeDias) {
        this.numeroDeDias = numeroDeDias;
    }

    public int getNumeroDeDias() {
return numeroDeDias;    }


}
public enum Moeda {

    DOLAR (4.99),
    EURO(5.83),
    REAL(1);

    private double taxaConversao;

    Moeda(double taxaConversao) {
        this.taxaConversao = taxaConversao;
    }

    public double converterPara(double valorEmReais) {
       return valorEmReais / taxaConversao;
    }
}
public enum CodigoErro {

    BAD_REQUEST(400,"Requisição inválida." ),
    FORBIDDEN(403, "Forbidden."),
    NOT_FOUND(404, "Página ão encontrada."),
    METHOD_NOT_ALLOWED(405, "Método não autorizado."),
    REQUEST_TIMEOUT (408, "Tempo da requisição esgotado.");

    private int codigoErro;
    private String descricao;

    CodigoErro(int codigoErro, String descricao) {
        this.codigoErro = codigoErro;
        this.descricao = descricao;
    }

    public int getCodigo() {
       return codigoErro;
    }

    public String getDescricao() {
       return descricao;
    }
}

import java.util.*;

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

        // 1 - Filtrar números
        List<String> input = Arrays.asList("10", "abc", "20", "30x");
        input.stream()
                .filter(i -> i.matches("\\d+"))
                .mapToInt(Integer::parseInt)
                .forEach(System.out::println);

        // 2 - Optional
        System.out.println(processaNumero(Optional.of(5)));   // Optional[25]
        System.out.println(processaNumero(Optional.of(-3)));  // Optional.empty
        System.out.println(processaNumero(Optional.empty())); // Optional.empty

        // 3 - Nome
        System.out.println(obterPrimeiroEUltimoNome("  João Carlos Silva   "));
        System.out.println(obterPrimeiroEUltimoNome("Maria   "));

        // 4 - Palíndromo
        System.out.println(ehPalindromo("socorram me subi no onibus em marrocos")); // true
        System.out.println(ehPalindromo("Java")); // false

        // 5 - Emails
        List<String> emails = Arrays.asList("TESTE@EXEMPLO.COM", "exemplo@Java.com ", "Usuario@teste.Com");
        System.out.println(converterEmails(emails));

        // 6 - Enum Mes
        System.out.println(Mes.FEVEREIRO.getNumeroDeDias()); // 28
        System.out.println(Mes.JULHO.getNumeroDeDias()); // 31

        // 7 - Enum Moeda
        System.out.println(Moeda.DOLAR.converterPara(100));
        System.out.println(Moeda.EURO.converterPara(100));

        // 8 - Enum CodigoErro
        System.out.println(CodigoErro.NOT_FOUND.getCodigo());
        System.out.println(CodigoErro.BAD_REQUEST.getDescricao());
    }

    // 2 - Optional
    public static Optional<Integer> processaNumero(Optional<Integer> numero) {
        return numero
                .filter(n -> n > 0)
                .map(n -> n * n);
    }

    // 3 - Nome
    public static String obterPrimeiroEUltimoNome(String nomeCompleto) {
        if (nomeCompleto == null || nomeCompleto.isBlank()) {
            return "";
        }

        String[] partes = nomeCompleto.trim().split("\\s+");

        if (partes.length == 1) {
            return partes[0];
        }

        return partes[0] + " " + partes[partes.length - 1];
    }

    // 4 - Palíndromo
    public static boolean ehPalindromo(String palavra) {
        String limpa = palavra.replace(" ", "").toLowerCase();

        String invertida = new StringBuilder(limpa)
                .reverse()
                .toString();

        return limpa.equals(invertida);
    }

    // 5 - Emails
    public static List<String> converterEmails(List<String> emails) {
        return emails.stream()
                .map(e -> e.trim().toLowerCase())
                .toList();
    }
}
1 resposta

Oii Victor, tudo bem?

Obrigado por compartilhar sua resolução no fórum — com certeza vai ajudar outros alunos que estiverem fazendo o mesmo desafio.

A implementação está bem estruturada. Alguns pontos que merecem destaque:

  • O uso de matches("\\d+") no exercício 1 é uma solução elegante para filtrar só o que é número inteiro.
  • O método ehPalindromo ficou limpo: remover espaços e usar StringBuilder.reverse() é exatamente a abordagem certa.
  • Os enums com atributos e construtores (Mes, Moeda, CodigoErro) estão corretos e bem organizados.

Uma observação pequena: no CodigoErro.NOT_FOUND, a descrição está com um typo — "Página ão encontrada." (faltou o "n" de "não"). Vale corrigir para manter a consistência do código.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade