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();
}
}