我仍在学习如何使用 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);
}
}
一直在寻找解决方案,但看起来很多人都有这种问题,所以如果你们中的任何人有其他解决方法,请分享给我,我只想要一个简单的程序,可以从我们输入的任何内容中读取,谢谢。
最佳答案
这是 JDK 中 Scanner
类的方法 throwFor
,它表明如果 (a) 输入资源关闭,它将抛出 NoSuchElementException
或 (b) 您正在输入缓冲区无法容纳的输入。
从您的代码来看,您似乎没有关闭扫描仪(您应该在最后关闭)。因此,唯一的可能性是您输入的内容无效。
顺便说一句,这不是编译器错误,而是运行时异常。
859 private void throwFor() {
860 skipped = false;
861 if ((sourceClosed) && (position == buf.limit()))
862 throw new NoSuchElementException();
863 else
864 throw new InputMismatchException();
865 }
关于java - 另一个带有简单程序的 java.util.NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49411170/