2
respostas

[Projeto] Solução do Desafio

Segue o link para a minha solução ao desafio proposto: https://github.com/YuriCicconi/Desafio-Alura-Listas

A única dúvida que eu fiquei foi em relação a utilização do Scanner. Quando eu tentei pegar o nome do produto utlizando o nextLine() não deu sorte, somente quando mudei para next(). Qual o motivo disso?

Obrigado!

2 respostas

Olá Yuri, tudo bem?

Primeiramente, parabéns pela solução do desafio!

Quanto à sua dúvida, o método next() do Scanner lê a entrada até encontrar um espaço em branco ou uma quebra de linha. Já o método nextLine() lê a entrada até encontrar uma quebra de linha, ou seja, ele lê toda a linha, incluindo o espaço em branco.

No seu caso, é possível que ao utilizar o nextLine() para ler o nome do produto, ele tenha lido também a quebra de linha que você digitou após o nome, o que acabou gerando um comportamento inesperado no seu código.

Uma solução para esse problema seria utilizar o nextLine() duas vezes: uma para ler o restante da linha após a entrada do nome do produto e outra para ler a próxima linha de entrada.

Por exemplo:

Scanner scan = new Scanner(System.in);

System.out.println("Digite o nome do produto:");
String nome = scan.nextLine();

// Lê o restante da linha após a entrada do nome do produto
scan.nextLine();

System.out.println("Digite a descrição do produto:");
String descricao = scan.nextLine();

Espero ter ajudado a esclarecer a sua dúvida. Se precisar de mais alguma ajuda, é só perguntar!

Espero ter ajudado e bons estudos!

Olá Otávio.

Eu utilizei essa solução de usar mais um nextLine() outras vezes no código exatamente por esse motivo que vc exemplificou.

No meu caso, o que estava ocorrendo é que eu tentava realizar a leitura (que deveria ser uma String, produto) do scanner através do nextLine() e ele passava para o próximo sem problemas. O que ocorria era que ele não armazenava a String digitada dentro do parametro 'produto'. Somente depois de alterar a leitra para next(), ele passou a armazenar corretamente.

Não sei se ficou claro o que está ocorrendo, qualquer coisa colo um exemplo do código aqui ahahhaa

Obrigado pelo retorno.