另一个带有简单程序的java.util.NoSuchElementException

时间:2018-03-21 16:02:28

标签: java

我还在学习如何使用java进行编码,遇到了我无法解决的问题。

编译说:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at GetInputData.main(GetInputData.java:10)

这是代码

import java.util.Scanner;

public class GetInputData
{
  public static void main(String[] args)
  {
    Scanner in = new Scanner(System.in);
    int tag;
    System.out.println("Enter an integer: ");
    tag = in.nextInt();
    System.out.println("Input Integer is: "+tag);
  }
}

一直在寻找解决方案,但看起来很多人都遇到过这种问题,所以如果你们中的任何人有其他解决办法,请你分享给我,我只想要一个简单的程序,从我们输入的内容中读取,谢谢。

2 个答案:

答案 0 :(得分:1)

这是来自JDK中throwFor类的方法Scanner,表明如果(a)输入资源关闭或(b)输入输入,它将抛出NoSuchElementException缓冲区无法容纳。

从您的代码中看起来您没有关闭扫描仪(您应该在最后)。所以唯一的可能是您输入的输入无效。

顺便说一句,这不是编译器错误,而是运行时异常。

859     private void throwFor() {
860         skipped = false;
861         if ((sourceClosed) && (position == buf.limit()))
862             throw new NoSuchElementException();
863         else
864             throw new InputMismatchException();
865     }

答案 1 :(得分:0)

我运行了代码,它在命令行工作时按预期工作。

但是,我尝试创建一个空文件,然后输入,我能够重现错误。

所以问题在于你的输入机制是什么。无论是错误的文件还是空文件或其他什么,都需要查找问题。