当我从用户那里得到输入时,为什么我的java代码会抛出一个错误?
我试图通过一个返回对象的方法从用户那里获取输入。由于某些原因,会引发此错误: 线程“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个 以下是一段代码片段:当我从用户那里得到输入时,为什么我的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
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()
也会关闭底层流。如果你关闭另一台扫描仪,它会导致你看到的错误。啊,好的,我明白了,我如何在不同的时间获得多个用户输入?