import java.util.*;
import java.util.Optional;
public class TodosExercicios {
public static void main(String[] args) {
// Exercício 1
List<String> listaStrings = Arrays.asList("10", "abc", "20", "30x");
List<Integer> numerosValidos = filtrarNumeros(listaStrings);
System.out.println("1. Números válidos: " + numerosValidos);
// Exercício 2
System.out.println("2. Quadrado de 5: " + processaNumero(Optional.of(5)));
System.out.println(" Quadrado de -3: " + processaNumero(Optional.of(-3)));
System.out.println(" Quadrado de vazio: " + processaNumero(Optional.empty()));
// Exercício 3
System.out.println("3. Nomes: " + obterPrimeiroEUltimoNome(" João Carlos Silva "));
System.out.println(" Nomes: " + obterPrimeiroEUltimoNome("Maria"));
// Exercício 4
System.out.println("4. Palíndromo: " + ehPalindromo("socorram me subi no onibus em marrocos"));
System.out.println(" Palíndromo: " + ehPalindromo("Java"));
// Exercício 5
List<String> emails = Arrays.asList("TESTE@EXEMPLO.COM", "exemplo@Java.com ", "Usuario@teste.Com");
System.out.println("5. Emails convertidos: " + converterEmails(emails));
// Exercício 6
System.out.println("6. Dias em Fevereiro: " + Mes.FEVEREIRO.getDias());
System.out.println(" Dias em Julho: " + Mes.JULHO.getDias());
// Exercício 7
System.out.println("7. 100 reais em dólar: " + Moeda.DOLAR.converter(100));
System.out.println(" 100 reais em euro: " + Moeda.EURO.converter(100));
// Exercício 8
System.out.println("8. Código 404: " + CodigoErro.NOT_FOUND.getCodigo() + " - " + CodigoErro.NOT_FOUND.getDescricao());
System.out.println(" Código 400: " + CodigoErro.BAD_REQUEST.getCodigo() + " - " + CodigoErro.BAD_REQUEST.getDescricao());
}
// Exercício 1
public static List<Integer> filtrarNumeros(List<String> lista) {
List<Integer> numeros = new ArrayList<>();
for (String item : lista) {
try {
numeros.add(Integer.parseInt(item));
} catch (NumberFormatException e) {
// Ignora se não for número
}
}
return numeros;
}
// Exercício 2
public static Optional<Integer> processaNumero(Optional<Integer> num) {
return num.filter(n -> n > 0).map(n -> n * n);
}
// Exercício 3
public static String obterPrimeiroEUltimoNome(String nome) {
String[] partes = nome.trim().split("\\s+");
return partes.length == 1 ? partes[0] : partes[0] + " " + partes[partes.length - 1];
}
// Exercício 4
public static boolean ehPalindromo(String texto) {
String limpo = texto.replaceAll("\\s", "").toLowerCase();
return new StringBuilder(limpo).reverse().toString().equals(limpo);
}
// Exercício 5
public static List<String> converterEmails(List<String> emails) {
List<String> convertidos = new ArrayList<>();
for (String email : emails) {
convertidos.add(email.trim().toLowerCase());
}
return convertidos;
}
// Exercício 6
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 final int dias;
Mes(int dias) {
this.dias = dias;
}
public int getDias() {
return dias;
}
}
// Exercício 7
public enum Moeda {
DOLAR(5.10), EURO(5.50), REAL(1.0);
private final double taxa;
Moeda(double taxa) {
this.taxa = taxa;
}
public double converter(double valor) {
return valor / taxa;
}
}
// Exercício 8
public enum CodigoErro {
NOT_FOUND(404, "Recurso não encontrado"),
BAD_REQUEST(400, "Requisição inválida"),
INTERNAL_SERVER_ERROR(500, "Erro interno do servidor");
private final int codigo;
private final String descricao;
CodigoErro(int codigo, String descricao) {
this.codigo = codigo;
this.descricao = descricao;
}
public int getCodigo() {
return codigo;
}
public String getDescricao() {
return descricao;
}
}
}