1
resposta

[Projeto] Desafio Buscador

package exercicios.desafioBuscador;

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

public class TesteEndereco {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ConsultaCep consultaCep = new ConsultaCep();
        GeradorDeArquivo geradorDeArquivo = new GeradorDeArquivo();
        List<Endereco> listaDeEndereco = new ArrayList<>();

        int opcao = 0;
        do {
            System.out.println("\nMenu:");
            System.out.println("1. Buscar CEP");
            System.out.println("2. Sair");
            System.out.print("Escolha uma opção: ");
            opcao = scanner.nextInt();
            scanner.nextLine(); // Consumir a quebra de linha após o nextInt()

            switch (opcao) {
                case 1:
                    System.out.println("Digite o CEP que deseja buscar: ");
                    String cepStr = scanner.nextLine();

                    try {
                        Endereco novoEndereco = consultaCep.buscaEndereco(cepStr);
                        System.out.println(novoEndereco);
                        listaDeEndereco.add(novoEndereco);
                        geradorDeArquivo.salvaEndereco(listaDeEndereco);
                    } catch (RuntimeException e) {
                        System.out.println(e.getMessage());
                        System.out.println("Finalizando a aplicação");
                    }
                    break;

                case 2:
                    System.out.println("Saindo...");
                    break;
                default:
                    System.out.println("Opção inválida. Tente novamente.");
            }
        } while (opcao != 2);

        scanner.close();
    }
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

package exercicios.desafioBuscador;

import com.google.gson.Gson;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class ConsultaCep {

    public Endereco buscaEndereco(String cep) {

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://viacep.com.br/ws/" + cep + "/json/"))
                .build();

        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            return new Gson().fromJson(response.body(), Endereco.class);
        } catch (IOException e) {
            System.out.println("Erro de E/S: " + e.getMessage());
            throw new RuntimeException("Erro de E/S ao buscar o endereço: " + e.getMessage());
        } catch (InterruptedException e) {
            System.out.println("Erro de interrupção: " + e.getMessage());
            throw new RuntimeException("Erro de interrupção ao buscar o endereço: " + e.getMessage());
        } catch (Exception e) {
            System.out.println("Erro desconhecido: " + e.getMessage());
            throw new RuntimeException("Erro desconhecido ao buscar o endereço: " + e.getMessage());
        }
    }
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

package exercicios.desafioBuscador;

public record Endereco(
        String cep ,
        String logradouro,

        String bairro,
        String localidade,
        String uf
        ) {}
        
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
        package exercicios.desafioBuscador;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class GeradorDeArquivo {
    public void salvaEndereco(List<Endereco> listaDeEndereco) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        try (FileWriter fileWriter = new FileWriter("listaDeEndereço.json")) {
            fileWriter.write(gson.toJson(listaDeEndereco));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

1 resposta

Oi, Agster, tudo bem?

Parabéns pelo resultado e obrigado por compartilhar no fórum e contribuir com a comunidade!

Continue mergulhando em tecnologia e se tiver dúvidas, conte com o fórum.

Abraços e bons estudos!