Presione Entrar para continuar en Java

Rupam Yadav 12 octubre 2023
Presione Entrar para continuar en Java

Este artículo le mostrará cómo ponemos la consola en espera hasta que el usuario presione Enter, luego se mostrará el siguiente mensaje. En el siguiente ejemplo, usaremos la clase Scanner para tomar tres entradas y luego mostrarlas en la consola.

Uso de un nextLine() adicional para esperar a que ingrese la clave en Java

En el ejemplo, creamos un objeto de la clase Scanner, sc. Scanner escanea el texto y analiza tipos primitivos como int y String. Esta clase viene con muchos métodos que se utilizan en operaciones de entrada. Los métodos más utilizados son nextInt(), nextLine, nextDouble, etc.

En el siguiente ejemplo, veremos dónde se encuentra el problema y usaremos una técnica para resolverlo en el siguiente.

Aquí, tomamos tres entradas: el tipo int, y las dos siguientes son del tipo String. Usamos la clase Scanner para llamar primero al método nextInt() para obtener la entrada para la edad en una variable de tipo int; luego, para tomar la entrada para el nombre y apellido, usamos dos métodos sc.nextLine() y dos variables para almacenarlos. Por último, mostramos todos los valores de las variables en la salida.

El problema radica cuando el usuario ingresa el valor de age y presiona Enter. Se supone que la consola obtiene la entrada para firstName, pero la omite y busca directamente el lastName. El resultado a continuación muestra claramente el problema.

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

Producción :

Enter your age: 23
Enter your First Name: Enter your last Name: John
Your Info:
Age: 23
Full Name:  John

Process finished with exit code 0

Ahora que conocemos el problema, podemos discutir la solución y por qué ocurre el problema en primer lugar. Cuando tomamos un valor int como entrada, el método nextInt() lee el valor int y no puede leer la nueva línea. Es por eso que cuando presionamos Enter después de leer int, la consola lo ve como una nueva línea y lo salta a la siguiente declaración.

Tenemos que usar un método adicional nextLine() después de la función nextInt() que saltará la nueva línea y mostrará la siguiente línea para abordar este problema. En la salida, podemos ver que ahora podemos ingresar el nombre, lo que no era posible en el ejemplo anterior.

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();
    sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

Producción :

Enter your age: 5
Enter your First Name: gfd
Enter your last Name: gfgf
Your Info:
Age: 5
Full Name:  gfgf
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Scanner