java.util.NoSuchElementException

java.util.NoSuchElementException,java,exception,error-handling,Java,Exception,Error Handling,样本输入 java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:907) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.nextInt(Scanner.java:2160) at java.util.Scanner.nextInt(Scanner.java:2119) at Solution.main(Soluti

样本输入

java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Solution.main(Solution.java:17)
样本输出错误

我试了什么

3
5 60
1 20 40 100 80 

对于假定的hasNextInt修复程序,我得到了更多的重复输出si.e false。

在开始时放置一个迭代,并检查以下情况:

if(sc.hasNextInt())
n=sc.nextInt();
if(sc.hasNextInt())
l=sc.nextInt();
对于扫描仪错误,您应该检查扫描仪是否有这样的错误

do {
//Here the code
} while (i.hasNextInt());
这就是我运行你的代码后得到的结果。我想你的代码是正确的。但你没有给它提供信息

当扫描器找不到您要求它读取的内容时,会抛出java.util.NoSuchElementException


给出准确的输入。

在代码中,您似乎已经关闭了扫描仪。不要关闭它并在程序中重新实例化它,而是在主程序开始时初始化它一次,并在主程序结束时关闭它

扫描程序在其资源关闭时关闭,因为它实现了 可关闭的接口

就像下面的例子-

3
5 60
1 20 40 100 80 
false

从帖子中得出这个答案:

您是否在IDE调试器中单步检查了代码以查看它实际在做什么?请这样做,它会对你更有教育意义。如果您这样做了,但仍然不理解,那么请准确解释调试时发现的内容以及您不理解的内容。
Scanner sc =new Scanner(System.in);
if (sc.hasNext()) {
//here the code
}
3
5 60
1 20 40 100 80 
false
  public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println(System.in.available());
        scanner.close();
        scanner = new Scanner(System.in);
        // System.out.println(System.in.available());
        // If you uncomment above: It will give you java.io.IOException: Stream closed
        String str = scanner.nextLine();
  }