Problema na utilização utilização do Scanner com String

4 respostas
Juliano.Hell

Ola pessoal, sou novo no fórum e iniciante em programação. Estou com um problema que não consigo desvendar, desde ja agradeço quem puder dar um auxílio.
Bom acontece o seguinte, quando faço a String palavra receber um dado digitado pelo teclado, simplismente passa batido, porém quando foi solicitado para ler um número inteiro, fez corretamente.. o que pode estar ocorrendo?

import java.util.Scanner;
public class biblioteca {

	public static void main(String[] args)
	{
		Scanner sc  = new Scanner (System.in);
		int qtdPalavras;
		String [] lista;
		String palavra;
		System.out.println("Digite a qtd de palavras a serem inseridas na biblioteca: ");
		qtdPalavras = sc.nextInt();
		lista = new String [qtdPalavras];
		System.out.println("Digite a 1 palavra: ");
		palavra=sc.nextLine();//variável palavra não esta recebendo dados digitados no teclado
		System.out.println(palavra);
	}

}

4 Respostas

javatar

Tirei o Line do nextLine, tente agora.

import java.util.Scanner;  
public class Teste {  
  
    public static void main(String[] args)  
    {  
        Scanner sc  = new Scanner (System.in);  
        int qtdPalavras;  
        String [] lista;  
        String palavra;  
        System.out.println("Digite a qtd de palavras a serem inseridas na biblioteca: ");  
        qtdPalavras = sc.nextInt();  
        lista = new String [qtdPalavras];  
        System.out.println("Digite a 1 palavra: ");  
        palavra=sc.next();//variável palavra não esta recebendo dados digitados no teclado  
        System.out.println(palavra);  
    }  
  
}
Juliano.Hell

Cara, jurava que tinha tentado isso… De qualquer forma tentei como quem não quer nada só pra ter certeza e deu certo.
vlw javatar!

ViniGodoy

É melhor entender o problema… e porque a solução apontada ainda não é a correção definitiva dele.

No teclado, você só informa texto, sempre teminado com a quebra de linha \n.
Mesmo que o usuário digite um número, ele estará na forma de texto, com \n.

Portanto, quando usar o Scanner para ler do teclado, o único método que deve ser usado, para nunca dar problema, é o nextLine().

Seu código corrigido:

import java.util.Scanner;  
public class Teste {  
  
    public static void main(String[] args)  
    {  
        Scanner sc  = new Scanner (System.in);  
        System.out.println("Digite a qtd de palavras a serem inseridas na biblioteca: ");  
        int qtdPalavras = Integer.parseInt(sc.nextLine());
        String lista[] = new String [qtdPalavras];  
        System.out.println("Digite a 1 palavra: ");  
        String palavra=sc.nextLine();//variável palavra não esta recebendo dados digitados no teclado  
        System.out.println(palavra);  
    }  
  
}

Outros métodos “next()” irão deixar o \n no buffer do scanner e pode ser que só ele seja lido numa próxima leitura.
Eles foram feitos para arquivos.

javatar

Sabia que tinha algo assim, mas não sabia direito o que era.
Obrigado tbm.

Criado 9 de junho de 2012
Ultima resposta 9 de jun. de 2012
Respostas 4
Participantes 3