Saltar al contenido

¿El escáner se salta nextLine () después de usar next () o nextFoo ()?

Solución:

Eso es porque el Scanner.nextInt El método no lee el nueva línea carácter en su entrada creado al presionar “Enter”, por lo que la llamada a Scanner.nextLine regresa después de leer eso nueva línea.

Encontrará un comportamiento similar cuando use Scanner.nextLine después Scanner.next() o cualquier Scanner.nextFoo método (excepto nextLine sí mismo).

Solución alterna:

  • O ponga un Scanner.nextLine llamar después de cada Scanner.nextInt o Scanner.nextFoo consumir el resto de esa línea, incluido nueva línea

    int option = input.nextInt();
    input.nextLine();  // Consume newline left-over
    String str1 = input.nextLine();
    
  • O, mejor aún, lea la entrada Scanner.nextLine y convierta su entrada al formato adecuado que necesite. Por ejemplo, puede convertir a un número entero usando Integer.parseInt(String) método.

    int option = 0;
    try {
        option = Integer.parseInt(input.nextLine());
    } catch (NumberFormatException e) {
        e.printStackTrace();
    }
    String str1 = input.nextLine();
    

El problema es con input.nextInt () método: solo lee el valor int. Entonces, cuando continúe leyendo con input.nextLine (), recibirá la tecla ” n” Enter. Entonces, para omitir esto, debe agregar el input.nextLine (). Espero que esto quede claro ahora.

Pruébelo así:

System.out.print("Insert a number: ");
int number = input.nextInt();
input.nextLine(); // This line you have to add (It consumes the n character)
System.out.print("Text1: ");
String text1 = input.nextLine();
System.out.print("Text2: ");
String text2 = input.nextLine();

Es porque cuando ingresa un número y luego presiona Ingresar, input.nextInt() consume sólo el número, no el “final de línea”. Cuando input.nextLine() se ejecuta, consume el “final de línea” que aún se encuentra en el búfer desde la primera entrada.

En su lugar, use input.nextLine() inmediatamente despues input.nextInt()

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *