Scanner in.next() nao bloquea

2 respostas
Alkamavo
do {

				
				System.out.print("nome  : ");
				String nomeCliente = in.next();
				
				System.out.print(" id do CLiente :");
				String id = in.next();


				r.getClientes().add(new Cliente(nomeCliente, id));
		
         if(in.next().equalsIgnoreCase("c")) {
        	 
        	 break;
         }

				
		}while(in.hasNext());

boas....o codigo na primeira iteração ou seja kuando corro o programa a primeira vez faz o k quero ..k é fazer o print e o Scanner.Next() bloquear até que escrevo algo na consola, ja na segunda vez do ciclo ele faz o print "nome : Id do Cliente:" ou seja o in.next nao bloquea......ja tou vidraçado....alguma ideia?!!

2 Respostas

E

“Vidraçado” quer dizer “com os olhos vidrados de tanto tentar”? Primeira vez que ouço falar disso. Estou ficando ultrapassado.

Não é por nada não, mas next() não é o mais adequado para você pegar um nome com espaços no meio (que é onde você ficou “vidraçado”. )
Use in.nextLine() para ler tudo (inclusive espaços) até o usuário apertar ENTER.

http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html

ViniGodoy

Aliás, para ler do console, use apenas o nextLine().

Mesmo para ler inteiros, floats e outros tipos de dados, use o nextLine() e converta-os depois com os métodos de parse adequados.

Criado 18 de novembro de 2010
Ultima resposta 18 de nov. de 2010
Respostas 2
Participantes 3