Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Hora da prática: desafios concluídos.

Desafio 1:

@FunctionalInterface
public interface Operacao {
    int multiplicacao(int a, int b);
}
public class MainOperacao {
    public static void main(String[] args) {
        Operacao operacao = (a, b) -> a * b;
        System.out.println(operacao.multiplicacao(5, 7));
    }
}

Desafio 2:

@FunctionalInterface
public interface NumeroPrimo {
    boolean verificarPrimo(int n);
}
import java.util.Scanner;

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

        NumeroPrimo primo = n -> {
            if (n <= 1) return false;
            for (int i = 2; i <= Math.sqrt(n); i++) {
                if (n % i == 0) return false;
            }
            return true;
        };

        Scanner scanner = new Scanner(System.in);
        System.out.println("Digite um número:");
        int num = scanner.nextInt();

        if (primo.verificarPrimo(num)){
            System.out.println("O número " + num + " é primo.");
        } else {
            System.out.println("O número " + num + " não é primo.");
        }
        scanner.close();
    }
}

Desafio 3:

package desafio3;

import java.util.function.Function;

public class ConversorMaiusculo {
    public static void main(String[] args) {
        Function<String, String> maiuscula = s -> s.toUpperCase();

        System.out.println(maiuscula.apply("java lambda"));
    }
}

Desafio 4:

@FunctionalInterface
public interface Palindromo {
    boolean verificarPalindromo(String str);
}
import java.util.Scanner;

public class MainPalindromo {
    public static void main(String[] args) {
        Palindromo palindromo = str -> str.equals(new StringBuilder(str).reverse().toString());

        Scanner scanner = new Scanner(System.in);
        System.out.println("Digite uma palavra e verifique se é um palíndromo:");
        String palavra = scanner.nextLine();

        if (palindromo.verificarPalindromo(palavra)){
            System.out.println("A palavra " + palavra + " é um palíndromo.");
        } else {
            System.out.println("A palavra " + palavra + " não é um palíndromo.");
        }
        scanner.close();
    }
}

Desafio 5:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ListaMultiplicados {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("----- Multiplicar números da lista por 3 -----");
        System.out.println("Digite 5 números para a lista.");

        List<Integer> numeros = new ArrayList<Integer>();
        for (int i = 0; i < 5; i++) {
            System.out.println("Número " + (i + 1) + ":");
            numeros.add(scanner.nextInt());
        }

        numeros.replaceAll(n -> n * 3);
        System.out.println("Números multiplicados:");
        System.out.println(numeros);

        scanner.close();
    }
}

Desafio 6:

import java.util.Arrays;
import java.util.List;

public class ListaNomes {
    public static void main(String[] args) {
        List<String> nomes = Arrays.asList("Leo", "João", "Maria", "Ana", "Pedro");
        nomes.sort((a, b) -> a.compareTo(b));
        System.out.println(nomes);
    }
}

Desafio 7:

@FunctionalInterface
public interface Divisao {
    double divisao(int a, int b) throws ArithmeticException;
}
import java.util.Scanner;

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

        Scanner scanner = new Scanner(System.in);
        System.out.println("Digite os números para divisão:");
        System.out.println("Primeiro número:");
        int num1 = scanner.nextInt();
        System.out.println("Segundo número:");
        int num2 = scanner.nextInt();

        try {
            Divisao divisao = (a, b) -> {
                if (b == 0) throw new ArithmeticException("Não divida por zero.");
                return (double) a / b;
            };
            System.out.printf("O resultado é: %.2f", divisao.divisao(num1,num2));
        } catch (ArithmeticException e){
            System.out.println("Erro: " + e.getMessage());
        }
        scanner.close();
    }
}
1 resposta
solução!

Oi, Leo! Como vai?

Gostei bastante de ver como você aplicou as interfaces funcionais e expressões lambda nos desafios. Sua solução está clara, objetiva e demonstra domínio das funcionalidades do Java moderno.

Uma dica interessante para o futuro é usar o método forEach para percorrer listas de forma ainda mais concisa. Veja este exemplo:


List<String> nomes = Arrays.asList("Ana", "João", "Maria");
nomes.forEach(nome -> System.out.println(nome));

Esse código imprime cada nome da lista, utilizando forEach com uma expressão lambda.

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