while循环中的扫描仪输入validation

我必须在while循环中显示Scanner输入:用户必须插入输入,直到他写“退出”。 所以,我必须validation每个输入以检查他是否写“退出”。 我怎样才能做到这一点?

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 } 

这不起作用。 如何validation每个用户输入?

问题是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 

}