spa*_*ara 8 java java.util.scanner
我试图使用扫描仪从键盘获取一个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)
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的.它独立于我的其余程序,我不明白为什么这不起作用.如果有帮助的话,它会在while循环中调用的方法中声明.
// scan for selection
Scanner s = new Scanner(System.in);
int choice = s.nextInt(); // error occurs at this line
s.close();
Run Code Online (Sandbox Code Playgroud)
我介绍了调试器并将错误缩小到:
Java运行时环境检测到致命错误:在pc = 0xb6bdc8a8处为SIGSEGV(0xb),pid = 5587,tid = 1828186944
JRE版本:7.0_07-b30 Java VM:OpenJDK服务器VM(23.2-b09混合模式linux-x86)有问题的框架:V [libjvm.so + 0x4258a8] java_lang_String :: utf8_length(oopDesc*)+ 0x58
无法编写核心转储.核心转储已被禁用.要启用核心转储,请在再次启动Java之前尝试"ulimit -c unlimited"
Hun*_*len 16
您应该使用类中的hasNextXXXX()方法Scanner来确保有一个可以读取的整数.
问题是你被调用nextInt(),它从Scanner对象指向的流中读取下一个整数,如果没有要读取的整数(即如果输入已经用尽,那么你会看到NoSuchElementException)
从JavaDocs开始,该nextInt()方法将在以下条件下抛出这些异常:
您可以使用以下hasNextInt()方法轻松解决此问题:
Scanner s = new Scanner(System.in);
int choice = 0;
if(s.hasNextInt())
{
choice = s.nextInt();
}
s.close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44127 次 |
| 最近记录: |