Correction du comportement de nextLine()
Le problème rencontré lors de l'utilisation de nextLine() dans le deuxième exemple de code provient de la combinaison de nextInt() et nextLine().
Le problème avec nextInt()
nextLine() consomme la ligne entière, y compris les espaces et les caractères saisis avant d'appuyer sur la touche Entrée. Cependant, nextInt() ne consomme que la valeur numérique. Si des caractères non numériques ou des espaces suivent le numéro, nextLine() tentera de les lire, ce qui entraînera un comportement inattendu.
Solution : Consommer la nouvelle ligne restante
Pour garantir que nextLine() lit la ligne complète comme prévu, vous pouvez ajouter un appel nextLine() après chaque nextInt() pour consommer tous les caractères résiduels sur la ligne. Cela garantit que lorsque nextLine() est utilisé pour lire la phrase, il recevra une ligne complète.
Exemple avec corrections :
// Example #2 (Corrected) 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(); scanner.nextLine(); // Consume remaining newline 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; } } } }
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!