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.