现在的位置: 首页 > 综合 > 正文

scanner.hasNext()的作用

2019年03月25日 ⁄ 综合 ⁄ 共 803字 ⁄ 字号 评论关闭

【问题】

Scanner sc = new Scanner(System.in);
do{
    int a;
    ... ...
    a=sc.nextInt();
    ... ...
}while(...);

想利用nextInt()从键盘输入一个整数赋值给一整形变量
由于需要重复输入 将此方法调用放到do-while循环中 第一次能正确输入
而再次进入循环碰到此方法时出现异常如下:
Exception in thread "main" java.util.NoSuchElementException
        at java.util.Scanner.throwFor(Unknown Source)
        at java.util.Scanner.next(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at java.util.Scanner.nextInt(Unknown Source)
        at InputSystem.main(InputSystem.java:206)

【解决办法】

抛出这个NoSuchElementException异常,表示,没有这么多的元素了。
就是,本来这时候不应该再执行的,而你while里居然判断为true,程序还继续执行,
由于没有下一个int了,所以就抛出这个异常。

例如,你输入:1 2 3
本来执行到3时,就没有元素了,而你的while居然还是判断为true,所以,就抛这个异常了。

应改为:

Scanner sc = new Scanner(System.in);
do{
    if(sc.hasNext()){
    int a;
    ... ...

    a=sc.nextInt();
    ... ...
}while(...);

抱歉!评论已关闭.