Java.util.Scanner.nextLine()

4 respostas
Benvenuto

Estou com um pequeno problema neste pequeno exemplo:

public class BoletimTest
{

	public static void main( String args[] )
	{
		Scanner input = new Scanner( System.in );
				
		Boletim meuBoletim = new Boletim( "Ciencia da Computacao" );
		
		System.out.println();
		System.out.printf( "O boletim esta inicialemnte definido para o curso:\n%s\n", meuBoletim.getCurseName() );
		System.out.println();
		
		System.out.print( "Deseja alterar o curso? 1-sim 2-nao:" );
		int choice = input.nextInt();
		System.out.println();
		
		if ( choice == 1 )
		{
			System.out.print( "Digite o nome do curso:" );
			String curseName = input.nextLine();
			System.out.println();
			
			meuBoletim.setCurseName( curseName );
		}
		else if ( choice == 2 )
		{
			System.out.printf( "Nome do curso mantido como:\n%s\n\n", meuBoletim.getCurseName() );
		}
		
		meuBoletim.displayMessage();
	}

}

na linha 15 quando solicito o nome do curso ele não para no prompt com o .nextLine() quando mudo pra, por exemplo, .next() ele pega, so que quero pegar a linha inteira e não so uma palavra assim como acontece com .next(). Se eu fizer outro objeto Scanner tipo um input2 ele pega com .nextLine(), mas não haveria como pegar sem precisar criar outro objeto?

os métodos são pegos da seguinte classe:

public class Boletim
{

	private String curseName;
	
	public Boletim( String name )
	{
		curseName = name;
	}

	public void setCurseName( String name )
	{
		curseName = name;
	}
	
	public String getCurseName()
	{
		return curseName;
	}
	
	public void displayMessage()
	{
		System.out.printf( "Bem-vindo ao boletim do curso\n%s\n", getCurseName() );
	}
	
}

quem souber, valeu!

[]'s.

4 Respostas

B

Acho que ele está pegando algum nova linha que fugiu do nextInt.

Tente dar um reset no input antes do nextLine.

Benvenuto

Qual o comando para resetar o input?

B

reset()

Edit: esquece, li errado… tô procurando o flush, e não o reset.

Edit2: Tenta o System.in.reset();

Benvenuto

Valeu Brother!

[]'s.

Criado 14 de maio de 2008
Ultima resposta 14 de mai. de 2008
Respostas 4
Participantes 2