我有一个用户可以运行的 hacky Ant 命令来做一些事情。此命令提示用户输入。在 IntelliJ 中,在测试时,它可以正常工作。但是当我从终端运行 ant 目标时,我得到了奇怪的行为。这是代码:
Scanner userIn = new Scanner(System.in);
PrintWriter writer = new PrintWriter(System.out);
writer.println(error + " If you continue with the load, some data may be in a corrupted state. Would you like to continue? (y/n): ");
writer.flush();
String userResponse = userIn.next();
while (!(userResponse.equalsIgnoreCase("y") || userResponse.equalsIgnoreCase("n")
|| userResponse.equalsIgnoreCase("yes") || userResponse.equalsIgnoreCase("no"))) {
writer.println("Invalid input. Please specify if you would like to continue with the load. (y/n): ");
writer.flush();
userResponse = userIn.next();
}
return userResponse.equalsIgnoreCase("y") || userResponse.equalsIgnoreCase("yes");
从终端运行 ant 命令时,错误消息会正确显示,但是当用户输入输入时,要么什么都没有发生,要么我必须按回车键很多次才能处理任何事情。它也拒绝正确读取输入。如果我输入yes,它仍然会永远循环,提示输入,就好像用户输入了无效输入一样。
这是某种错误吗?我不擅长使用扫描仪吗?
编辑:我已经尝试使用 nextLine() 代替。有时,但并非始终如一,我得到一个 java.util.NoSuchElementException: No line found 异常。其他时候,如果我按 Enter 10 次以上,它就会起作用。