whileループでスキャナー入力を表示する必要があります。ユーザーは「quit」と書き込むまで入力を挿入する必要があります。したがって、私は各入力を検証して、彼が「終了」と書いているかどうかを確認する必要があります。どうやってやるの?
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
}
これは機能しません。各ユーザー入力を検証するにはどうすればよいですか?
問題は、 nextLine() "このスキャナーを現在の行を超えて進める"ということです。したがって、while
条件でnextLine()
を呼び出し、戻り値を保存しないと、ユーザーの入力のその行が失われます。 3行目のnextLine()
を呼び出すと、別の行が返されます。
あなたはこのようなことを試すことができます
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);
}
試してください:
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
}
scanner.nextLineが「終了」していないかどうかを常に確認する
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
}