Scanner de validation de l'entrée dans la boucle while
J'ai pu montrer ce Scanner entrées dans un tout boucle: l'utilisateur doit insérer les entrées jusqu'à ce qu'il écrit "quitter". Donc, je dois valider chaque entrée pour vérifier si il l'écrit, "quitter". Comment puis-je le faire?
while (!scanner.nextLine().equals("quit")) {
System.out.println("Insert question code:");
String question = scanner.nextLine();
System.out.println("Insert answer code:");
String answer = scanner.nextLine();
service.storeResults(question, answer); //This stores given inputs on db
}
Cela ne fonctionne pas. Comment puis-je valider chaque saisie de l'utilisateur?
Pas sûr de combien de son le même cas, mais cela a fonctionné correctement pour moi. Pas sûr de ce que exactement à ne pas travailler pour vous. N'oubliez pas de donner "quitter" uniquement et n'est pas le cas de tout autre de ses versions.
Quand on parle de quelque chose qui "ne fonctionne pas", de spécifier de quelle manière il ne fonctionne pas. Comment son comportement diffèrent de ce que vous attendiez?
Quand on parle de quelque chose qui "ne fonctionne pas", de spécifier de quelle manière il ne fonctionne pas. Comment son comportement diffèrent de ce que vous attendiez?
OriginalL'auteur Kurt Bourbaki | 2013-11-13
Vous devez vous connecter pour publier un commentaire.
Le problème est que nextLine() "les Progrès de ce scanner passé la ligne en cours". Ainsi, lorsque vous appelez
nextLine()
dans lewhile
condition, et ne pas enregistrer la valeur de retour, vous avez perdu la ligne de l'entrée de l'utilisateur. L'appel ànextLine()
sur la ligne 3 renvoie une ligne différente.Vous pouvez essayer quelque chose comme cela
Scanner scanner = new Scanner(System.in)
est en dehors de la boucle while?Vous ne voulez pas un nouvel
Scanner
créé pour chaque entrée de l'utilisateur. Un seul Scanner sur le seul système de flux d'entrée maintient un état cohérent sur ce flux.OriginalL'auteur Ruchira Gayan Ranaweera
Essayer:
while (scanner.hasNextLine())
etwhile (true)
(comme dans Ruchira de réponse) dans ce cas?while(true) prendra fin seulement en pause et tout(scanner.hasNextLine()) de mettre fin à l'EOF.
Mais comment peut-il atteindre la fin du fichier si il y aura toujours un
scanner.nextLine()
(même vides)?OriginalL'auteur user2986555
toujours vérifier si le scanner.nextLine n'est pas "quitter"
}
OriginalL'auteur mosaad