Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Minha classe Principal

//package

//imports

public class Principal {

    private Scanner leitura = new Scanner(System.in);
    private final String URL_BASE = "https://parallelum.com.br/fipe/api/v1/";
    private ConsumoApi consumo = new ConsumoApi();
    private ConverteDados conversor = new ConverteDados();
    public void exibeMenu() {

        var menu = """
                **** OPÇÕES DE VEÍCULO ****
                                
                1 - Carro
                2 - Moto
                3 - Caminhão
                4 - Sair
                                
                Que tipo de veículo deseja consultar?
                """;
        System.out.println(menu);
        
        //Selecionar tipo de veículo

        var opcaoVeiculo = leitura.nextLine();

        switch (opcaoVeiculo) {
            case "1":
                opcaoVeiculo = "carros/marcas";
                System.out.println("Consulta de carros:");
                break;
            case "2":
                opcaoVeiculo = "motos";
                System.out.println("Consulta de motos:");
                break;
            case "3":
                opcaoVeiculo = "caminhoes";
                System.out.println("Consulta de caminhões:");
                break;
            case "4":
                System.out.println("Consulta encerrada pelo usuário");
                break;
            default:
                System.out.println("Opção inválida. Escolha uma opção de 1 a 4");
                break;
        }

        //Exibir marcas da categoria

        String enderecoMarcas = URL_BASE + opcaoVeiculo + "/marcas/";
        var json = consumo.obterDados(enderecoMarcas);
        var marcas = conversor.obterLista(json, Dados.class);
        marcas.stream()
                .sorted(Comparator.comparing(Dados::codigo))
                .forEach(System.out::println);
        
        //Selecionar marca do veículo

        System.out.println("Digite o código da marca para consultar:");
        var opcaoMarca = leitura.nextLine();
        
        //Exibir modelos da categoria

        String enderecoModelos = enderecoMarcas + opcaoMarca + "/modelos/";
        json = consumo.obterDados(enderecoModelos);
        var listaModelos = conversor.obterDados(json, Modelos.class);
        System.out.println("Modelos dessa marca:");
        listaModelos.modelos().stream()
                .sorted(Comparator.comparing(Dados::codigo))
                .forEach(System.out::println);

        //Selecionar modelo do veículo

        System.out.println("Digite um trecho do nome do modelo para consultar:");
        var nomeModelo = leitura.nextLine();
        List<Dados> listaAnos = listaModelos.modelos().stream()
                .filter(m -> m.nome().toLowerCase().contains(nomeModelo.toLowerCase()))
                .collect(Collectors.toList());
        System.out.println("Digite o código do modelo para consultar:");
        var opcaoModelo = leitura.nextLine();
        String enderecoAnos = enderecoModelos + opcaoModelo + "/anos/";
        
        //Exibir anos do modelo

        System.out.println("\nO modelo escolhido tem dados dos seguintes anos para consulta:");
        listaAnos.forEach(System.out::println);
        
        //Criar lista com os dados da tabela FIPE para todos os anos do modelo escolhido

        List<Veiculos> listaDadosTabelaFipe = new ArrayList<>();
        for (int i = 0; i < listaAnos.size(); i++) {
            var enderecoTodosOsAnos = enderecoAnos + listaAnos.get(i).codigo();
            json = consumo.obterDados(enderecoTodosOsAnos);
            Veiculos veiculo = conversor.obterDados(json, Veiculos.class);
            listaDadosTabelaFipe.add(veiculo);
        }

        //Selecionar opção e exibir dados

        System.out.println("""
                Deseja consultar os dados da tabela FIPE para todos os anos?
                1 - Sim, todos os anos 
                2 - Não, escolher ano
                3 - Sair
                """);

        var opcaoAno = leitura.nextLine();
        switch (opcaoAno) {
            case "1":
                listaDadosTabelaFipe.forEach(System.out::println);
                break;
            case "2":
                System.out.println("\nDigite o ano que deseja consultar:");
                opcaoAno = leitura.nextLine();
                String enderecoAnoEspecifico = enderecoAnos + opcaoAno;
                json = consumo.obterDados(enderecoAnoEspecifico);
                var dadosTabelaFipe = conversor.obterDados(json, Veiculos.class);
                System.out.println(dadosTabelaFipe);
                break;
            case "3":
                System.out.println("\nConsulta encerrada pelo usuário");
                break;
            default:
                System.out.println("\nOpção inválida. Escolha uma opção de 1 a 3");
                break;
        }
    }
}
2 respostas

Fiz tudo mas não sei se funciona, porque estou com o problema que mencionei em outra sessão do fórum, não consigo configurar o consumo de API através de um proxy...

solução!

Olá, Clarissa! Tudo bem?

Analisando o seu código não consigo dizer que o mesmo está funcionando 100% já que você compartilhou somente o código do seu arquivo principal sem as outras classes auxiliares, porém, analisando a estrutura do mesmo, aparentar não ter nenhum problema e deve funcionar corretamente.

A título de informação, quando precisar compartilhar códigos aqui no fórum é interessante dar uma boa visibilidade para ele. Para isso, você pode seguir os passos que compartilho a seguir. Sem a formatação correta, o código acaba ficando escondido e de difícil visualização.

OBS: no seu caso, algumas partes do código ficaram formatadas devido à endentação do código, mas atrapalha um pouco na visualização do código.

  1. Selecione o trecho com o código no seu post;

  2. Aqui no fórum, procure o ícone </>. É a sétima opção na aba superior do nosso editor de texto;

  3. Clique no ícone comentado acima, certificando-se que está com todo o trecho de código selecionado.

Para confirmar se está tudo certo, você pode pré-visualizar seu post clicando no penúltimo ícone da esquerda para a direita, ou também usando o atalho F9.

No mais, se precisar de ajuda ou tiver alguma dúvida relacionada aos seus estudos, o fórum é o melhor lugar para te ajudar.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.