当前位置: 首页 > 知识库问答 >
问题:

另一个java.util.NoSuchElementException与简单的程序[重复]

姜乐家
2023-03-14

我仍在学习如何使用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个答案

云京
2023-03-14

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

但是,我尝试创建一个空文件,并将其输入,并且我能够重现错误。

所以问题在于你的输入机制是什么。无论是错误的文件还是空文件,或者其他什么,这就是你需要寻找问题的地方。

濮阳和泰
2023-03-14

下面是JDK中Scanner类的方法,该方法表明,如果(a)输入资源已关闭,或者(b)输入缓冲区无法容纳的输入,它将抛出NoTouchElementException。

代码来看,您似乎没有关闭扫描仪(应该在最后关闭)。因此,唯一的可能性是您输入的输入无效。

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

859     private void throwFor() {
860         skipped = false;
861         if ((sourceClosed) && (position == buf.limit()))
862             throw new NoSuchElementException();
863         else
864             throw new InputMismatchException();
865     }
 类似资料:
  • You are the light of the world. A city located on a hill cannot be hidden. People do not light a lamp and put it under a basket but on a lampstand, and it gives light to all in the house. In te same w

  • 问题内容: 我现在才开始学习Java的内部体系结构。我大致了解了类加载的概念,该类在运行时加载所需的类,在找不到类且特定的类加载器加载由该类引用的类时抛出。 有人可以在下面的示例Java代码中清楚地说明类加载的流程,即引导类加载和用户定义的类加载的顺序。 我还从参考资料中了解到“ 维护其加载的类的名称空间”。通过名称空间,这是否意味着类的文字名称?也有人可以解释一下它的含义/优势吗? 问题答案:

  • 本文向大家介绍一个超级简单的python web程序,包括了一个超级简单的python web程序的使用技巧和注意事项,需要的朋友参考一下 在MAC/LINUX环境下,执行vi hello.py命令,并输入以下代码 执行python hello.py 8080出现  http://0.0.0.0:8080/ 然后访问"http://localhost:8080/Service/Match"地址,返

  • 本文向大家介绍C#程序创建一个简单线程,包括了C#程序创建一个简单线程的使用技巧和注意事项,需要的朋友参考一下 为了创建线程,我创建了一个函数- 调用上述函数以创建线程,并创建一个新的ThreadStart委托- 示例 使用以下代码创建一个简单的线程。 输出结果

  • 如下考虑Java类,其中是的字段,而是类中方法的局部变量。 声称:

  • 我们必须编写一个 C 程序,该程序本质上将使用管道将一个命令/程序的 stdin 重定向到另一个命令/程序 stdout。如果命令行上的程序被传递了 . ls -l \; more,它应该将 的 stdout 重定向到 ,其中 是分隔符。这个程序应该适用于我们路径中的任何命令/程序,所以:. cat filename.c \; more,应该与键入:相同。 我的问题是,我的程序似乎不能正常执行,或