Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由于某种原因,用户提示是否关闭了一行?_Java_Input_Stdin - Fatal编程技术网

Java 由于某种原因,用户提示是否关闭了一行?

Java 由于某种原因,用户提示是否关闭了一行?,java,input,stdin,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.pr

我要求用户输入,但我希望它遵循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");
      }
u.hasNext()
在提示之前阻止输入。这是不必要的,因为之后调用
u.next()
会阻塞。您正在将实际的
扫描仪
对象与“exit”进行比较,这永远不会是真的。试试这个:

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()));
}
u.hasNext()
在提示之前阻止输入。这是不必要的,因为之后调用
u.next()
会阻塞。您正在将实际的
扫描仪
对象与“exit”进行比较,这永远不会是真的。试试这个:

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()));
}

u.equals(“exit”)
不会做你认为它会做的事。我用它来不获取空值,嗯?你是什么意思@Yawn?
u.equals(“exit”)
不做你认为它做的事。我用它来不获取空值,嗯?你说的@Yawn是什么意思?我明白了,谢谢-但是我的while循环不需要抛出异常吗?@Yawn a)你的try/catch块包围了循环,所以它不在我的代码段的范围之内。b) 我不知道你所说的“需要能够抛出异常”是什么意思。Try/catch使您能够捕获异常;没有任何东西可以阻止代码引发异常。c) 我看不出您首先在哪里或为什么期待异常。如果我以usrinput的形式在文本文件中运行程序和管道,它将到达EOF并抛出NullPointerException。我希望能够在没有障碍物的情况下接住或扔掉它error@Yawn我很惊讶它不会抛出
NoTouchElementException
。但是在任何情况下,我已经添加了回您的
hasNext()
检查该案例。只是运行-是的,您是对的,它抛出的是NoTouchElementException,我知道了,谢谢-但是我的while循环不需要能够抛出异常吗?@Yawn a)您的try/catch块包围了该循环,因此它超出了我的代码片段的范围。b) 我不知道你所说的“需要能够抛出异常”是什么意思。Try/catch使您能够捕获异常;没有任何东西可以阻止代码引发异常。c) 我看不出您首先在哪里或为什么期待异常。如果我以usrinput的形式在文本文件中运行程序和管道,它将到达EOF并抛出NullPointerException。我希望能够在没有障碍物的情况下接住或扔掉它error@Yawn我很惊讶它不会抛出
NoTouchElementException
。但是在任何情况下,我已经添加了您的
hasNext()
检查该案例。只需运行-是的,您是对的,它抛出了NoTouchElementException