La classe Scanner en Java est un outil puissant pour prendre en compte les entrées des utilisateurs. Cependant, il présente certaines bizarreries moins connues qui peuvent trébucher les développeurs, en particulier lorsqu'ils utilisent différents types d'entrée. Voici un aperçu de quelques nuances clés et solutions aux problèmes courants.
La méthode nextLine() de la classe Scanner est essentielle pour lire les entrées multilignes. Contrairement à next(), qui ne lit que jusqu'à un espace, nextLine() lit jusqu'à une nouvelle ligne, ce qui le rend parfait pour les entrées contenant des espaces.
System.out.println("Enter Customer's Full Name, Email, Age, and Credit Limit"); Scanner sc = new Scanner(System.in); // Using nextLine() for full name (handles spaces) and next() for single-word inputs ScannerInput customer = new ScannerInput(sc.nextLine(), sc.next(), sc.nextInt(), sc.nextDouble());
Dans cet exemple, nextLine() est utilisé pour capturer un nom complet avec des espaces. Cela nous permet de gérer des entrées comme « Arshi Saxena » sans les diviser en jetons séparés.
Lorsque vous utilisez nextInt(), next() ou nextDouble() avant nextLine(), toute nouvelle ligne (n) laissée dans le tampon peut interférer avec votre flux d'entrée. Par exemple :
System.out.println("Enter a number:"); int number = sc.nextInt(); sc.nextLine(); // Clear the newline from the buffer System.out.println("Enter a sentence:"); String sentence = sc.nextLine();
Ici, sc.nextLine() est ajouté après sc.nextInt() pour effacer le caractère de nouvelle ligne, l'empêchant d'être immédiatement lu en entrée par le nextLine() suivant.
Lorsque vous combinez différents types d'entrées, n'oubliez pas de gérer le tampon avec soin :
Utilisez nextLine() immédiatement après toute méthode comme nextInt() ou nextDouble() pour consommer les caractères de nouvelle ligne restants.
Envisagez de créer des méthodes distinctes pour différents types d'entrée afin d'éviter toute confusion.
Fermez toujours les instances du Scanner après utilisation pour libérer des ressources.
Voici un exemple pratique qui démontre à la fois l'utilisation de nextLine() et l'effacement du tampon :
Scanner sc = new Scanner(System.in); System.out.println("Enter Customer's Full Name, Email, Age, and Credit Limit"); ScannerInput c1 = new ScannerInput(sc.nextLine(), sc.next(), sc.nextInt(), sc.nextDouble()); System.out.println("Enter Alias:"); sc.nextLine(); // Clear buffer String alias = sc.nextLine(); System.out.println("Alias is " + alias);
Ces conseils vous aideront à garantir une gestion plus fluide des entrées et à minimiser les comportements inattendus dans vos applications.
Bon codage !
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!