JShell:使用 /open 时扫描程序 nextLine() NoSuchElementException

JShell: Scanner nextLine() NoSuchElementException when using /open

提问人:threeweeksearlier 提问时间:1/12/2023 更新时间:1/12/2023 访问量:34

问:

使用 JShell 的 /open 命令打开 Java 文件并运行代码时,用户输入不适用于 Scanner。当它到达 nextLine() 方法时,它总是会抛出一个 NoSuchElementException。有谁知道为什么会这样,是否有我错过的修复/解决方法?

重现步骤:

  • 使用以下代码创建 Java 文件(例如,test.java):
Scanner scanner = new Scanner(System.in)
String input = scanner.nextLine();
  • 打开 JShell
  • /open test.java

我已经看过这个答案,但是使用 --execution local 并没有解决我的问题。调用然后更接近程序停止用户输入的地方,但随后 shell 似乎冻结了,我无法输入任何内容。调用似乎确实有效,但是在运行文件后,它使您保持在 JShell 中(其中 /open 命令不起作用),并且必须不断退出 JShell 才能重新运行文件真的很不方便。另一种方法是让每个脚本都以 结尾,但我真的不明白为什么像用户输入这样基本的东西似乎如此错误。jshell --execution local/open test.javajshell --execution local test.javaSystem.exit(0);

我正在使用 OpenJDK 版本 17.0.5。

通常这没什么大不了的,但我希望使用 JShell 作为教学工具......但这些输入问题/不便与我有关。任何帮助都非常感谢!

java java.util.scanner 用户输入 jshell system.in

评论


答: 暂无答案