Java attend l'entrée
L’entrée de l’utilisateur peut faire référence à toute information ou donnée qu’un utilisateur souhaite que le compilateur traite. Nous pouvons rencontrer des situations dans lesquelles nous souhaitons que notre programme suspende la compilation et attende que l’utilisateur saisisse une valeur.
Pour de telles situations, nous pouvons utiliser la fonction nextLine()
.
Dans ce tutoriel, nous allons apprendre comment faire en sorte que Java attende l’entrée de l’utilisateur en utilisant la méthode nextLine()
.
La fonction nextLine()
se trouve dans la classe java.util.Scanner
de Java. Cette fonction est utilisée pour aller au-delà de la ligne courante et retourner une entrée.
Ainsi, en utilisant cette méthode, le compilateur attend que l’utilisateur entre une chaîne valide et reprenne la compilation du programme. Cette méthode n’est applicable qu’au type de données string.
Par example,
// 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();
}
}
Contribution:
Hello World.
Production:
The line entered by the user: Hello World.
Il n’est pas nécessaire d’attendre pour vérifier la disponibilité de l’entrée car le Scanner.nextLine()
se bloquera automatiquement jusqu’à ce qu’une ligne soit disponible.
Le code suivant explique cela.
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");
}
}
}
Production:
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
Dans l’exemple ci-dessus, nous avons calculé et affiché le temps d’attente du compilateur pour l’entrée à l’aide de la fonction currentTimeMillis()
.
Cette fonction peut renvoyer deux exceptions. L’IllegalStateException
est levée lorsque le Scanner est fermé, et la NoSuchElementException
est levée lorsqu’aucune ligne n’est trouvée.