Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida interessante.

Uma coisa que ocorreu no meu código e achei bastante interessante é que:

anoFilme = leitura.nextInt();
nomeFIlme = leitura.nextLine()

Não conseguiremos digitar o nome do filme, pois esse input será preenchido automaticamente com o '\n' da linha anterior... Mas o interessante é que se colocarmos o .nextLine() o código roda corretamente. Acho qeu quando temos uma string o proprio comando de leitura faz uma exclusão do '\n'. Seria isso?

1 resposta
solução!

Olá Hector, tudo bem?

É uma observação interessante que você fez sobre o comportamento do método nextLine() em relação ao \n no código. Na verdade, o que acontece é que o método nextInt() lê apenas o número inteiro digitado pelo usuário, mas não consome o caractere de quebra de linha (\n) que é deixado no buffer de entrada.

Quando você chama o método nextLine() logo em seguida, ele consome esse caractere de quebra de linha pendente e retorna uma string vazia. É por isso que, quando você não utiliza o nextLine(), o programa pula a leitura do nome do filme.

Para resolver esse problema, você pode adicionar um nextLine() extra após a leitura do número inteiro, para consumir o \n antes de ler a próxima linha. Ficaria assim:

anoFilme = leitura.nextInt();
leitura.nextLine(); // Consumir o \n pendente
nomeFilme = leitura.nextLine();

Dessa forma, o programa irá funcionar corretamente, permitindo que você digite o nome do filme após a leitura do ano.

Espero ter ajudado e bons estudos!