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
}