扫描仪在Mac OSX终端中无法正常工作

时间:2013-04-08 21:32:36

标签: java macos io intellij-idea java.util.scanner

我有一个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次以上,它就有效。

1 个答案:

答案 0 :(得分:1)

我一直遇到同样的问题,我的程序(通过ant运行)会创建一个扫描程序但是当被要求输入时,程序似乎只是循环而不接受任何输入,直到我用ctrl + c终止。结果问题是我的build.xml文件中的“fork”属性。我有fork =“是”,我将其更改为“no”,或者只是完全取出它,扫描仪工作正常。希望这有帮助!