我还在学习如何使用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);
}
}
一直在寻找解决方案,但看起来很多人都遇到过这种问题,所以如果你们中的任何人有其他解决办法,请你分享给我,我只想要一个简单的程序,从我们输入的内容中读取,谢谢。
答案 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)
我运行了代码,它在命令行工作时按预期工作。
但是,我尝试创建一个空文件,然后输入,我能够重现错误。
所以问题在于你的输入机制是什么。无论是错误的文件还是空文件或其他什么,都需要查找问题。