Usar nextLine( ) de Scanner em loop

2 respostas
M

Amigos, quando uso o método nextLine() da classe Scanner em um loop tipo while acontece um problema A PARTIR DA SEGUNDA ITERAÇÃO (segunda entrada no laço while): ao invés de surgir na tela a 1ª solicitação (“Digite seu nome”) aparecem as 2 ao mesmo tempo, uma em baixo da outra. Assim, sem aguardar a 1ª entrada do teclado:
Digite seu nome
Digite sua idade
Adaptem e executem esse código por favor para melhor entendimento:

 linhas de praxe

Scanner dados=new Scanner(System.in);

String nome="";

int contador=1, idade=0;

while (contador<=3)

{

System.out.println(Digite seu nome:); nome=dados.nextLine();

System.out.println(Digite sua idade:);

idade=dados.nextInt(); contador=contador+1;

}

outras linhas escrevem os 3 nomes com as idades

Obs.: O erro  surge a partir da 2ª entrada no loop (while). Fico grata a quem puder me ajudar.

2 Respostas

T

Marcia, isso é um problema quando você executa o scanner dentro de um laço, não sei o porque, mas a solução seria esta abaixo

Scanner dados=new Scanner(System.in);
		String nome="";

		int contador=1, idade=0;
		 
		 while (contador<=3) {
			 
			 System.out.print("Digite seu nome: "); 
			 nome=dados.nextLine();		 
			 
			 System.out.print("Digite sua idade: ");
			 idade = dados.nextInt();
			 
			 dados.nextLine();
			 
			 contador++;
		 }
M
thiago.correa:
Marcia, isso é um problema quando você executa o scanner dentro de um laço, não sei o porque, mas a solução seria esta abaixo
Scanner dados=new Scanner(System.in);
		String nome="";

		int contador=1, idade=0;
		 
		 while (contador<=3) {
			 
			 System.out.print("Digite seu nome: "); 
			 nome=dados.nextLine();		 
			 
			 System.out.print("Digite sua idade: ");
			 idade = dados.nextInt();
			 
			 dados.nextLine();
			 
			 contador++;
		 }

Obrigada, Thiago. De fato esta é a solução. Muito obrigada.

Criado 29 de janeiro de 2007
Ultima resposta 29 de jan. de 2007
Respostas 2
Participantes 2