【发布时间】:2020-04-25 08:12:22
【问题描述】:
我试图在返回 Object 的方法中简单地从用户那里获取输入。由于某种原因,抛出了这个错误:
线程“main”中的异常 java.lang.reflect.InvocationTargetException 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)在 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) 在 蜡烛.Main.getValue(Main.java:381) 在 蜡烛.Main.runFile(Main.java:979) 在 蜡烛.Main.main(Main.java:1013) ... 5 更多
这是一个代码sn-p:
System.out.print("> ");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
scanner.close();
谁能解释如何完成这项工作,或指出我做错了什么?谢谢。
【问题讨论】:
-
这能回答你的问题吗? java.util.NoSuchElementException: No line found: 使用 Scanner 你需要检查下一行是否有
hasNextLine()。这是 Javadoc:docs.oracle.com/javase/10/docs/api/java/util/Scanner.html -
该代码中的任何内容都无法解释该异常。您是否可能在 system.in 周围创建另一个扫描仪并在此代码之前关闭它?
-
我正在 main() 方法中创建另一个 Scanner 对象,并使用scanner.close() 将其关闭,并且工作正常。这就是它调用错误的原因吗?
-
在扫描仪上调用
close()也会关闭底层流。如果您要关闭其他扫描仪,则会导致您看到的错误。 -
啊,我明白了,那我如何在不同的时间获得多个用户输入?