Je dois montrer les entrées du scanner dans une boucle while : l'utilisateur doit insérer des entrées jusqu'à ce qu'il écrive "quit". Donc, je dois valider chaque entrée pour vérifier s'il écrit "quit". Comment puis je faire ça?
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
}
Ça ne marche pas. Comment puis-je valider chaque entrée d'utilisateur?
Le problème est que nextLine () "fait avancer ce scanner au-delà de la ligne actuelle". Ainsi, lorsque vous appelez nextLine()
dans la condition while
et que vous n'enregistrez pas la valeur de retour, vous avez perdu cette 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 ça
Scanner scanner=new Scanner(System.in);
while (true) {
System.out.println("Insert question code:");
String question = scanner.nextLine();
if(question.equals("quit")){
break;
}
System.out.println("Insert answer code:");
String answer = scanner.nextLine();
if(answer.equals("quit")){
break;
}
service.storeResults(question, answer);
}
Essayer:
while (scanner.hasNextLine()) {
System.out.println("Insert question code:");
String question = scanner.nextLine();
if(question.equals("quit")){
break;
}
System.out.println("Insert answer code:");
String answer = scanner.nextLine();
service.storeResults(question, answer); // This stores given inputs on db
}
toujours vérifier si scanner.nextLine n'est pas "quitter"
while (!scanner.nextLine().equals("quit")) {
System.out.println("Insert question code:");
String question = scanner.nextLine();
if(question.equals("quit"))
break;
System.out.println("Insert answer code:");
String answer = scanner.nextLine();
if(answer.equals("quit"))
break;
service.storeResults(question, answer); // This stores given inputs on db
}