出于某种原因,用户提示是一行的?

时间:2017-02-13 05:03:27

标签: java input stdin

我要求用户输入,但我希望它遵循enter:提示并且在同一行。

我的代码根据' ok'

输出结果
ok
enter: ok
ok

我想在输入后启动用户输入: - 希望这样做...

enter: ok
ok

这是我的代码:

private static Scanner u = new Scanner(System.in);
  try{
      while(u.hasNext() && !u.equals("exit")) {
          System.out.printf("enter: ");
          usrInput = u.next();
          System.out.printf(usrInput + "\n");
          System.out.println(findClosestMatch(usrInput.toLowerCase()));
        }
      } catch(NullPointerException e) {
            System.out.println("Error - NullPointerException");
      }

1 个答案:

答案 0 :(得分:2)

u.hasNext()在提示之前阻止输入。这是不必要的,因为之后调用u.next()会阻止。而且你将实际的Scanner对象与“退出”进行比较,这将永远不会成立。试试这个:

while (true) {
    System.out.print("enter: ");
    if (!u.hasNext() || (usrInput = u.next()).equals("exit")) {
        break;
    }
    System.out.println(usrInput);
    System.out.println(findClosestMatch(usrInput.toLowerCase()));
}