Appuyez sur Entrée pour continuer en Java

Rupam Yadav 12 octobre 2023
Appuyez sur Entrée pour continuer en Java

Cet article vous montrera comment nous mettons la console en attente jusqu’à ce que l’utilisateur appuie sur Entrée, puis le message suivant s’affichera. Dans l’exemple suivant, nous allons utiliser la classe Scanner pour prendre trois entrées et les afficher ensuite sur la console.

Utilisation d’un nextLine() supplémentaire pour attendre la touche Entrée en Java

Dans l’exemple, nous créons un objet de la classe Scanner, sc. Scanner scanne le texte et analyse les types primitifs tels que int et String. Cette classe est livrée avec de nombreuses méthodes utilisées dans les opérations de saisie. Les méthodes les plus couramment utilisées sont nextInt() , nextLine, nextDouble, etc.

Dans l’exemple ci-dessous, nous verrons où se situe le problème et nous utiliserons une technique pour le résoudre lors du prochain.

Ici, nous prenons trois entrées : le type int, et les deux suivantes sont du type String. Nous utilisons la classe Scanner pour appeler d’abord la méthode nextInt() pour obtenir l’entrée de l’âge dans une variable de type int ; puis, pour prendre en entrée le prénom et le nom, nous utilisons deux méthodes sc.nextLine() et deux variables pour les stocker. Enfin, nous montrons toutes les valeurs des variables dans la sortie.

Le problème réside lorsque l’utilisateur saisit la valeur de age et appuie sur Entrée. La console est censée recevoir l’entrée pour firstName, mais elle l’ignore et va directement pour le lastName. La sortie ci-dessous montre clairement le problème.

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);
  }
}

Production:

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

Maintenant que nous connaissons le problème, nous pouvons discuter de la solution et des raisons pour lesquelles le problème se produit en premier lieu. Lorsque nous prenons une valeur int en entrée, la méthode nextInt() lit la valeur int et ne peut pas lire le saut de ligne. C’est pourquoi lorsque nous appuyons sur Entrée après avoir lu int, la console le voit comme une nouvelle ligne et passe à l’instruction suivante.

Nous devons utiliser une méthode supplémentaire nextLine() après la fonction nextInt() qui sautera la nouvelle ligne et affichera la ligne suivante pour résoudre ce problème. Dans la sortie, nous pouvons voir que nous devons maintenant entrer le prénom, ce qui n’était pas possible dans l’exemple précédent.

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);
  }
}

Production:

Enter your age: 5
Enter your First Name: gfd
Enter your last Name: gfgf
Your Info:
Age: 5
Full Name:  gfgf
Auteur: Rupam Yadav
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

Article connexe - Java Scanner