1
resposta

Utilização do Scanner

Utilizando o Scanner, utilizei o método nextInt() e mais abaixo para obter a descrição do Jogo, utilizando a mesma instância do Scanner eu chamei o método nextLine() já que se tratava de uma string. Acontece que o código não esperou eu digitar o S/N da pergunta ("Deseja adicionar uma descrição ao jogo? S/N"). Só funcionou corretamente quando eu utilizei o nextLine() para obter o código do jogo. Eu não posso usar formas diferentes de obter o que foi digitado, usando a mesma instância do Scanner?

1 resposta

Olá, Diego.

Tudo bem?Entendo sua dúvida, é uma questão comum quando se está trabalhando com a classe Scanner em Kotlin.

O que acontece é que o método nextInt() não consome o último caractere de nova linha (enter) de sua entrada. Então, quando você chama o método nextLine() logo após, ele consome essa nova linha pendente e avança, sem permitir que você insira a descrição do jogo.

Uma solução comum para isso é chamar um método extra nextLine() logo após o nextInt(), assim você consome a linha pendente e o próximo nextLine() funcionará como esperado, esperando sua entrada.

Aqui está um exemplo:

val scanner = Scanner(System.`in`)
println("Digite o ID do jogo:")
val id = scanner.nextInt()
scanner.nextLine()  // consome a nova linha pendente
println("Deseja adicionar uma descrição ao jogo? S/N")
val descricao = scanner.nextLine()

Neste caso, você está usando a mesma instância do Scanner, mas adicionou uma chamada extra ao nextLine() para lidar com a nova linha pendente.

Espero ter entendido e conseguido ajudar. Bons estudos!