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!