【问题标题】:Why is my java code throwing an error when I get input from the user?当我从用户那里得到输入时,为什么我的 java 代码会抛出错误?
【发布时间】: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() 也会关闭底层流。如果您要关闭其他扫描仪,则会导致您看到的错误。
  • 啊,我明白了,那我如何在不同的时间获得多个用户输入?

标签: java input


【解决方案1】:

以前有人问过这个问题。

  1. 基本答案是:

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

    • 解决办法是:

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

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

    • 如果您的输入包含特殊字符,那么您应该明确指定所需的编码。 示例:Scanner scanner = new Scanner(new FileInputStream(filePath), "UTF-8");

所有这些问题都在这里讨论:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2020-12-02
    • 2015-02-07
    • 2021-05-06
    相关资源
    最近更新 更多