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?
[code]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);
}
}[/code]
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);
}
}
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!
É 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.
Sabia que tinha algo assim, mas não sabia direito o que era.
Obrigado tbm.