Maison > Java > javaDidacticiel > Comment « scanner.nextLine() » de Java gère-t-il les entrées, en particulier dans les boucles ?

Comment « scanner.nextLine() » de Java gère-t-il les entrées, en particulier dans les boucles ?

DDD
Libérer: 2024-12-19 18:07:17
original
985 Les gens l'ont consulté

How Does Java's `scanner.nextLine()` Handle Input, Especially in Loops?

Utilisation de scanner.nextLine()

En Java, la méthode nextLine() de la classe java.util.Scanner lit une seule ligne de texte à partir d’un flux. Il est couramment utilisé pour lire les entrées de l'utilisateur.

Considérez les exemples suivants :

Exemple 1 : Lecture d'une seule ligne

import java.util.Scanner;

class Test {
    public void menu() {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter a sentence:\t");
        String sentence = scanner.nextLine();

        System.out.print("Enter an index:\t");
        int index = scanner.nextInt();

        System.out.println("\nYour sentence:\t" + sentence);
        System.out.println("Your index:\t" + index);
    }
}
Copier après la connexion

Dans cet exemple, la méthode nextLine() lit la saisie de la phrase par l'utilisateur. Il attend correctement que l'utilisateur saisisse une valeur avant de continuer à lire l'index.

Exemple 2 : Lecture en boucle

// Example 2
import java.util.Scanner;

class Test {
    public void menu() {
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("\nMenu Options\n");
            System.out.println("(1) - do this");
            System.out.println("(2) - quit");

            System.out.print("Please enter your selection:\t");
            int selection = scanner.nextInt();

            if (selection == 1) {
                System.out.print("Enter a sentence:\t");
                String sentence = scanner.nextLine();

                System.out.print("Enter an index:\t");
                int index = scanner.nextInt();

                System.out.println("\nYour sentence:\t" + sentence);
                System.out.println("Your index:\t" + index);
            }
            else if (selection == 2) {
                break;
            }
            else {
                System.out.print("Invalid input. Please try again: ");
                scanner.nextLine();
            }
        }
    }
}
Copier après la connexion

Dans cet exemple, le Le problème où la méthode nextLine() ne lit pas l'entrée dans la boucle est résolu en appelant explicitement scanner.nextLine() après avoir lu l'entier de sélection. Cela garantit que tous les caractères restants dans le tampon d'entrée sont supprimés, permettant ainsi à l'appel nextLine() de la phrase de fonctionner correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal