当前位置: 首页 > 面试题库 >

扫描器的next()抛出NoSuchElementException对于某些在线编译器

姬选
2023-03-14
问题内容

这似乎是一个常见问题(多次提出),但我无法找到对此行为的解释。下面的代码工作在一个编译器,但抛出Exception in thread "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);

Tested on <https://www.compilejava.net/> and<https://www.codechef.com/ide>上测试,它
会引发异常。但是,在某些编译器上,它可以正常工作。是否有任何
这种行为的原因(例如JDK的更改或其他原因)?


问题答案:

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

请参阅该文档:

由Enumeration的nextElement方法抛出,以指示该枚举中没有更多元素。

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

它可在TutorialsPoint IDE 上使用,因为它允许用户输入。它不适用于codechef和compilejava IDE,因为这些IDE不支持用户输入。但是,还有第二种方法可以在codechef上添加用户输入。只需在Custom Input复选框上打勾并提供任何输入即可。然后它将编译。

发生此异常的另一个原因,即根本没有更多的用户输入,可以通过在调用之前s.next()检查s.hasNext()一下扫描程序是否还有另一个令牌来处理。

  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中,出现此异常: 从此Java代码: 抛出异常 System.out.println(file.next()。charAt(counter)); 异常是什么意思? 问题答案: 您在循环的每次迭代中都调用两次,因此,当您快要结束时,您会跳出列表的末尾,编译器会告诉您那里什么也没有。 代替这个: 改为这样做: 看这里

  • 下面的代码显示了一个错误。我对编码很陌生。这东西弄乱了我的脑袋。我能做什么? 下面的代码在编辑之后。但它仍然显示出NoSuchElementFound异常的相同错误。

  • 问题内容: 我真的试图通过线程找到答案,但仍然希望能得到一些反馈。 我认为下面的代码风格不好,但是我不知道为什么在输入数字后会把我射杀 ,因为我为两个方法创建了两个Scanner对象,并且我应该能够开始一个新的输入。而且,如果我删除了inputAndPrintNumber()中的内容,它将正常工作并正确编译。我真的希望知道如果我仍然使用两个Scanner obj并且不删除(如果可能的话)为什么以及

  • 问题内容: 我的Java作业有问题。我遇到了意外的异常,特别是: java.util.NoSuchElementException:找不到行 我正在使用,该程序不断读取任何内容,并重复“无效格式”异常文本。如果输入正确的值,则第一部分通过,然后该部分立即进入此异常。如果输入的值不正确,则它将开始循环异常。 这是我的代码: 问题答案: 您关闭了多个库,这些库关闭了底层库,因此另一个库将不再从同一库和

  • 对不起,我的问题,但我是一个初学者。请你能支持与扫描仪相关的关心。 “背景”:我写了一些研究扫描仪的代码: 我有一个例外:找不到行。这就是我在输出中得到的结果: 任务:运行失败今天是哪一天?线程“main”java.util.NosuchelementException异常:在java.base/java.util.Scanner.NextLine(Scanner.java:1651)和demoo