首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java.Util.Scanner的NoSuchElementException

使用Java.Util.Scanner的NoSuchElementException
EN

Stack Overflow用户
提问于 2012-12-06 01:47:38
回答 8查看 91.8K关注 0票数 20

我对Java非常陌生,但正在阅读“Java: How to program”(第9版)一书。并且已经达到了一个例子,在我的生活中,我无法弄清楚问题是什么。

以下是教科书中源代码示例的(略微)增强版本:

代码语言:javascript
复制
import java.util.Scanner;
public class Addition {
  public static void main(String[] args) {
    // creates a scanner to obtain input from a command window

    Scanner input = new Scanner(System.in);

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    System.out.print("Enter First Integer: "); // prompt
    number1 = input.nextInt(); // reads first number inputted by user

    System.out.print("Enter Second Integer: "); // prompt 2 
    number2 = input.nextInt(); // reads second number from user

    sum = number1 + number2; // addition takes place, then stores the total of the two numbers in sum

    System.out.printf( "Sum is %d\n", sum ); // displays the sum on screen
  } // end method main
} // end class Addition

我收到'NoSuchElementException‘错误:

代码语言:javascript
复制
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at Addition.main(Addition.java:16)
Enter First Integer:

我知道这可能是由于源代码中的某些东西与java.utilScanner类不兼容,但我真的无法进一步推断问题是什么。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-12-06 01:54:22

枚举的nextElement方法引发的NoSuchElementException,指示枚举中不再有元素。

http://docs.oracle.com/javase/7/docs/api/java/util/NoSuchElementException.html

这样如何:

代码语言:javascript
复制
if(input.hasNextInt() )
     number1 = input.nextInt(); // if there is another number  
else 
     number1 = 0; // nothing added in the input 
票数 11
EN

Stack Overflow用户

发布于 2012-12-06 01:53:25

在为变量赋值之前,您应该使用hasNextInt()

票数 2
EN

Stack Overflow用户

发布于 2012-12-06 02:04:24

这是由于在未检查if there's any integer available的情况下调用nextInt()造成的。为了防止这种情况发生,您可以考虑使用hasNextInt()来检查是否有更多的令牌可用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13729294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档