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
DDDoriginal
2024-12-19 18:07:171017parcourir

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

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

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!

Déclaration:
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