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

nextInt()扫描器错误[重复]

裴鸿熙
2023-03-14

我正试图使用扫描仪从键盘上获取一个int值,但我得到了以下错误:

Exception in thread "main" 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 TableReader.mainMenu(TableReader.java:122)
    at TableReader.main(TableReader.java:76)
    // scan for selection
    Scanner s = new Scanner(System.in);
    int choice = s.nextInt();           // error occurs at this line
    s.close();

写入核心转储失败。核心转储已被禁用。要启用核心转储,请在再次启动Java之前尝试“ulimit-c unlimited”

共有1个答案

微生乐
2023-03-14

您应该使用scanner类中的hasnextxxxx()方法来确保有一个整数可以读取。

问题是,您被称为NextInt(),它从扫描器对象指向的流中读取下一个整数,如果那里没有要读取的整数(例如,如果输入耗尽,那么您将看到NoSuchelementException)

在JavaDocs中,NextInt()方法将在以下条件下抛出这些异常:

  • InputMisMatchException-如果下一个令牌与整数正则表达式不匹配,或者超出范围
  • NoSuChelementException-如果输入耗尽
  • IllegalStateException-如果此扫描器已关闭

您可以使用hasNextInt()方法轻松地解决这个问题:

Scanner s = new Scanner(System.in);
int choice = 0;

if(s.hasNextInt()) 
{
   choice = s.nextInt();
}

s.close();
 类似资料:
  • 这里是Java新手,尝试扫描下面表单中的输入: 3 3 3 101 000 101 拜托,有更有经验的人能教我如何解决这个问题吗?我发现一些问题与。nextline()和。nextint()有类似的问题,但不完全是这样。不过,如果真的是复制品,我提前道歉... (如果需要,我会添加更多信息)

  • 这是我在Jcreator上编写的代码 代码如下:- 什么是错误的,我如何纠正它?请帮助。

  • 问题内容: 逻辑工作正常,但是,当while循环结束并重新开始时,使用此行从键盘再次读取我的下一个选项-> option = kb.nextInt(); 。它给了我一个例外,更确切地说是下面的一个例外: 下面是我的代码,为什么此扫描程序会生成此错误?还有其他从键盘读取的方法吗? 下面的此方法在另一个类文件RegistrationController.java上,因此由上面的rc viariable

  • 我是Java新手。我必须从2D数组向终端显示int系数。我想在同一行中为同一卖家提供每个值。有一个换行符(由于扫描仪?)。我一直在寻找分隔符system.in但我不明白如何使用它,如果这是合适的。 请帮帮我好吗?先谢谢你 最终结果: 输入卖家数量5 输入型号4的数量 卖家1 0 3. 2个 0

  • 对于作业,我必须编写以下代码: 当我尝试编译它时,它在命令提示符下给了我3个错误,说“无法解析符号,符号:类扫描仪,位置:类单词,扫描仪用户输入=新扫描仪(System.in)”。我不确定错误在哪里。我应该使用BufferedReader作为输入吗?