Estou tentando retornar o episódio como dito na aula, mas ele está sempre retornando o primeiro episódio pra primeira temporada.
GitHub: https://github.com/BirdMelo/ScreenMatch-Sem-Web/tree/main/src
Estou tentando retornar o episódio como dito na aula, mas ele está sempre retornando o primeiro episódio pra primeira temporada.
GitHub: https://github.com/BirdMelo/ScreenMatch-Sem-Web/tree/main/src
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