Problema com Java Scanner SC.NextLine ();
-
20-09-2019 - |
Pergunta
sry sobre meu inglês :)
Sou novo na programação Java e tenho um problema com o scanner. Eu preciso ler um int, mostrar algumas coisas e depois ler uma string, então eu uso sc.NextInt (); Mostre minhas coisas showmenu (); E então tente ler uma string Palabra = SC.NextLine ();
Alguém me disse que eu preciso usar um sc.nextLine (); depois de SC.NextInt (); Mas eu não entendo por que você tem que fazer isso :(
Aqui está o meu código:
public static void main(String[] args) {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int respuesta = 1;
showMenu();
respuesta = sc.nextInt();
sc.nextLine(); //Why is this line necessary for second scan to work?
switch (respuesta){
case 1:
System.out.println("=== Palindromo ===");
String palabra = sc.nextLine();
if (esPalindromo(palabra) == true)
System.out.println("Es Palindromo");
else
System.out.println("No es Palindromo");
break;
}
}
Ty muito pelo seu tempo e ajuda: D
Solução
nextInt()
Só lê até encontrar o INT e depois parar.
Você tem que fazer nextLine()
Porque o fluxo de entrada ainda possui um caractere novo e possivelmente outros dados não-INT na linha. Chamando nextLine()
lê o que resta, incluindo os dados, incluindo o usuário pressionado entre inserir um INT e inserir uma string.
Outras dicas
Quando você insere um valor (seja String
, int
, double
, etc ...) e acertar 'Enter', um personagem de nova linha (também conhecido '\n'
) será anexado ao final de sua entrada. Então, se você está entrando em um int, sc.nextInt()
só lerá o número inteiro e deixar o '\n'
atrás do buffer. Então, a maneira de consertar isso é adicionar um sc.nextLine()
Isso lerá o restante e o jogará fora. É por isso que você precisa ter essa linha de código em seu programa.