我有一个hacky Ant命令,用户可以运行它做一些事情。此命令提示用户输入。在IntelliJ中,测试时,它可以正常工作。但是当我从终端运行蚂蚁目标时,我得到了奇怪的行为。这是代码:
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:没有找到行异常。其他时候,如果我输入10次以上,它就有效。
答案 0 :(得分:1)
我一直遇到同样的问题,我的程序(通过ant运行)会创建一个扫描程序但是当被要求输入时,程序似乎只是循环而不接受任何输入,直到我用ctrl + c终止。结果问题是我的build.xml文件中的“fork”属性。我有fork =“是”,我将其更改为“no”,或者只是完全取出它,扫描仪工作正常。希望这有帮助!