Abaixo minhas resoluções dos exercícios
1 - Neste registrei a key da API por fora para não expor minha chave pessoal
package CursoAPI.Exercicios.Aula1;
import java.io.IOException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;
public class MainExercicioAPI1 {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o nome do livro que deseja buscar: ");
        var busca = leitura.nextLine();
        // API_KEY registrada no terminal pelo setx (temporário)
        String key = System.getenv("API_KEY");
        if (key == null) {
            System.out.println("API key não encontrada. Defina a variável de ambiente API_KEY.");
            return;
        }
        String endereco = "https://www.googleapis.com/books/v1/volumes?q=" + busca + "&key=" + key;
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(java.net.URI.create(endereco))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
2 -
package CursoAPI.Exercicios.Aula1;
import java.io.IOException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;
public class MainExercicioAPI2 {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o nome da criptomoeda que deseja buscar: ");
        var busca = leitura.nextLine();
        String endereco = "https://api.coingecko.com/api/v3/simple/price?ids=" + busca + "&vs_currencies=brl";
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(java.net.URI.create(endereco))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
3 -
package CursoAPI.Exercicios.Aula1;
import java.io.IOException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;
public class MainExercicioAPI3 {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o nome da receita que deseja buscar: ");
        var busca = leitura.nextLine();
        String endereco = "https://www.themealdb.com/api/json/v1/1/search.php?s=" + busca;
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(java.net.URI.create(endereco))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
 
            