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

[Dúvida] Problemas com findFirst

Estou tentando retornar o episódio como dito na aula, mas ele está sempre retornando o primeiro episódio pra primeira temporada.

A parte do código

GitHub: https://github.com/BirdMelo/ScreenMatch-Sem-Web/tree/main/src

2 respostas
solução!

Oie João, tudo bem?

Baixei seu projeto aqui e vi que o problema estava nos caracteres que o scanner estava pegando. Na parte de buscar episódios, selecionando episódio e temporada, você estava usando o nextInt(). Quando usamos esse método, o scanner lê o int que foi digitado, mas não lê o enter que também digitamos, e isso fica gravado no buffer. Daí, ao tentar ler o nome do episódio buscado, o scanner pegava esse enter e usava na busca, pegando o primeiro registro de todos e já retornando.

Por isso, para corrigir, você pode colocar um WRITE.nextLine() logo depois de pegar o número do episódio, e pode retirá-lo da parte da busca pelo nome do episódio. O código fica assim:

....

//        um ep especifico
        System.out.println("Qual temporada?");
        int w_season = WRITE.nextInt();
        System.out.println("Qual episodio?");
        int w_ep = WRITE.nextInt();
        WRITE.nextLine();

        var episod = LINKS.epLink(name, w_season, w_ep);
        R_Episode epData = CONVERTER.getDatum(episod, R_Episode.class);
        System.out.println(epData);

        System.out.println("Toda a serie");
        episodes.forEach(System.out::println);

        System.out.print("Epsodio: ");
        var partTitle = WRITE.nextLine();
        Optional<Episode> epSearched = episodes.stream()
                .filter(e -> e.getTitle().toLowerCase().contains(partTitle.toLowerCase()))
                .findFirst();
        if (epSearched.isPresent()) {
            System.out.print("Episódio encontrado: ");
            System.out.println(epSearched.get());
        } else {
            System.out.println("Episódio não encontrado.");
        }
        
        ....
        

Espero ter ajudado! Abraços e bons estudos :)

Obrigado, Iasmin! eu fiquei futucando e acabei achando. Mas agradeço pela ajuda <3