Espera de entrada de Java

Siddharth Swami 12 octubre 2023
Espera de entrada de Java

La entrada del usuario puede referirse a cualquier información o dato que un usuario quiera que el compilador procese. Podríamos encontrar situaciones en las que queremos que nuestro programa pause la compilación y espere a que el usuario ingrese algún valor.

Para tales situaciones, podemos usar la función nextLine().

En este tutorial, aprenderemos cómo hacer que Java espere la entrada del usuario usando el método nextLine().

La función nextLine() se encuentra en la clase java.util.Scanner en Java. Esta función se utiliza para pasar de la línea actual y devolver alguna entrada.

Entonces, al usar este método, el compilador espera a que el usuario ingrese una cadena válida y reanude la compilación del programa. Este método solo es aplicable al tipo de datos de cadena.

Por ejemplo,

// Java program to illustrate the
// nextLine() method of Scanner class in Java

import java.util.Scanner;

public class Scanner_Class {
  public static void main(String[] args) {
    // create a new scanner
    // with the specified String Object
    Scanner scanner = new Scanner(System.in);
    String s = scanner.nextLine();
    // print the next line
    System.out.println("The line entered by the user: " + s);
    scanner.close();
  }
}

Aporte:

Hello World.

Producción :

The line entered by the user: Hello World.

No es necesario esperar para comprobar la disponibilidad de la entrada, ya que Scanner.nextLine() se bloqueará automáticamente hasta que haya una línea disponible.

El siguiente código explica esto.

import java.util.Scanner;
public class Scanner_Test {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    try {
      while (true) {
        System.out.println("Please input a line");
        long then = System.currentTimeMillis();
        String line = scanner.nextLine();
        long now = System.currentTimeMillis();
        System.out.printf("Waited %.3fs for user input%n", (now - then) / 1000d);
        System.out.printf("User input was: %s%n", line);
      }
    } catch (IllegalStateException | NoSuchElementException e) {
      // System.in has been closed
      System.out.println("System.in was closed; exiting");
    }
  }
}

Producción :

Please input a line
Hello World.
Waited 1.892s for user input
User input was: Hello World.
Please input a line
^D
System.in was closed; exiting

En el ejemplo anterior, calculamos y mostramos el tiempo que el compilador esperó la entrada usando la función currentTimeMillis().

Esta función puede devolver dos excepciones. La IllegalStateException se genera cuando se cierra el escáner, y la NoSuchElementException se genera cuando no se encuentra ninguna línea.

Artículo relacionado - Java Input