Utilizando scanner.nextLine () [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Scanner se salta nextLine () después de usar next () o nextFoo ()? 15 respuestasHe tenido problemas al intentar usar el método nextLine () de java.util.Scanner.
Esto es lo que probé:
import java.util.Scanner;
class TestRevised {
public void menu() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
System.out.print("Enter an index:\t");
int index = scanner.nextInt();
System.out.println("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
}
Ejemplo 1 Este ejemplo funciona según lo previsto. La líneaString sentence = scanner.nextLine();
espera a que se ingrese la entrada antes de continuar enSystem.out.print("Enter an index:\t");
.
Esto produce la salida:
Enter a sentence: Hello.
Enter an index: 0
Your sentence: Hello.
Your index: 0
// Example #2
import java.util.Scanner;
class Test {
public void menu() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\nMenu Options\n");
System.out.println("(1) - do this");
System.out.println("(2) - quit");
System.out.print("Please enter your selection:\t");
int selection = scanner.nextInt();
if (selection == 1) {
System.out.print("Enter a sentence:\t");
String sentence = scanner.nextLine();
System.out.print("Enter an index:\t");
int index = scanner.nextInt();
System.out.println("\nYour sentence:\t" + sentence);
System.out.println("Your index:\t" + index);
}
else if (selection == 2) {
break;
}
}
}
}
Ejemplo # 2: Este ejemplo no funciona según lo previsto. Este ejemplo utiliza un ciclo while y una estructura if - else para permitir al usuario elegir qué hacer. Una vez que el programa llegue aString sentence = scanner.nextLine();
, no espera la entrada sino que ejecuta la líneaSystem.out.print("Enter an index:\t");
.
Esto produce la salida:
Menu Options
(1) - do this
(2) - quit
Please enter your selection: 1
Enter a sentence: Enter an index:
Lo que hace que sea imposible ingresar una oración.
¿Por qué el ejemplo n. ° 2 no funciona según lo previsto? La única diferencia entre Ex. 1 y 2 es que Ex. 2 tiene un ciclo while y una estructura if-else. No entiendo por qué esto afecta el comportamiento de scanner.nextInt ().