gpt4 book ai didi

java - 对于某些在线编译器,扫描器 next() 会抛出 NoSuchElementException

转载 作者:太空宇宙 更新时间:2023-11-04 11:49:24 24 4
gpt4 key购买 nike

这似乎是一个常见问题(多次询问),但我无法找到这种行为的解释。以下代码在一个编译器中有效,但在另一个编译器中抛出线程“main”java.util.NoSuchElementException 中的异常

  Scanner s = new Scanner(System.in);
System.out.println("Enter name: ");
String name = s.next();
System.out.println("Name is " + name);

https://www.compilejava.net/ 上测试和 https://www.codechef.com/ide它抛出异常。然而,在某些编译器上它工作得很好。这种行为有什么原因吗(比如 JDK 的更改或其他什么)?

最佳答案

抛出此异常是因为枚举中没有更多元素。

参见the documentation :

Thrown by the nextElement method of an Enumeration to indicate that there are no more elements in the enumeration.

<小时/>

一些在线 IDE 根本不允许用户输入,在这种情况下,一旦您尝试读取用户输入,就会抛出异常。

  1. 它适用于 TutorialsPoint IDE,因为它允许用户输入。
  2. 它不适用于 codechefcompilejava IDE,因为这些 IDE 不支持用户输入。

但是,还有第二种方法可以在 codechef 上添加用户输入。只需勾选自定义输入复选框并提供任何输入即可。然后它将编译。

<小时/>

导致此异常的另一个原因,即根本没有更多的用户输入,可以通过在调用 s.next() 之前检查 s.hasNext() 以查看扫描器是否有另一个 token 来处理。

  Scanner s = new Scanner(System.in);
System.out.print("Enter name: ");
String name = null;
if(s.hasNext())
name = s.next();
System.out.println("Name is " + name);

关于java - 对于某些在线编译器,扫描器 next() 会抛出 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42000662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com