Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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 - Fatal编程技术网

当我从用户那里得到输入时,为什么我的java代码会抛出一个错误?

当我从用户那里得到输入时,为什么我的java代码会抛出一个错误?,java,input,Java,Input,我试图通过一个返回对象的方法从用户那里获取输入。由于某些原因,会引发此错误: 线程“main”java.lang.reflect.InvocationTargetException中出现异常 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法)在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces

我试图通过一个返回对象的方法从用户那里获取输入。由于某些原因,会引发此错误:

线程“main”java.lang.reflect.InvocationTargetException中出现异常 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机 方法)在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.base/java.lang.reflect.Method.invoke(Method.java:564) org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61) 原因:java.util.NoSuchElementException:在中找不到行 java.base/java.util.Scanner.nextLine(Scanner.java:1651)位于 candle.Main.getValue(Main.java:381)位于 candle.Main.runFile(Main.java:979)位于 candle.Main.Main(Main.java:1013)。。。还有5个

以下是一段代码片段:

System.out.print(“>”);
扫描仪=新的扫描仪(System.in);
字符串输入=scanner.nextLine();
scanner.close();

有人能解释一下如何完成这项工作,或者指出我做错了什么吗?谢谢。

这个问题以前有人问过

  • 基本答案是:

    • 如果没有可读取的行,扫描器将抛出
      java.util.NoSuchElementException:No line found

    • 解决办法是:

      Scanner scanner = new Scanner(System.in);
      String input = null;
      if (scanner.hasNextLine()
          scanner.nextLine();
      
  • 问题也可能发生在:

    • 如果过早关闭扫描仪(例如,在某些其他方法中,
      input.close()

    • 如果输入包含特殊字符,则应明确指定所需的编码。 示例:
      Scanner Scanner=new Scanner(新文件输入流(filePath),“UTF-8”)

  • 这里讨论了所有这些问题:

    • Javadoc在这里:


    这是否回答了您的问题使用扫描仪,您需要使用
    hasNextLine()
    检查是否有下一行。下面是Javadoc:该代码中的任何内容都无法解释该异常。您是否正在围绕system.in创建另一个扫描程序并在此代码之前将其关闭?我正在main()方法中创建另一个扫描程序对象,它使用scanner.close()关闭,并且工作正常。这就是它调用错误的原因吗?在扫描仪上调用
    close()
    也会关闭底层流。如果你关闭另一台扫描仪,它会导致你看到的错误。啊,好的,我明白了,我如何在不同的时间获得多个用户输入?