在java.util.Scanner.throwFor(未知来源)错误 [英] at java.util.Scanner.throwFor(Unknown Source) error

查看:3094
本文介绍了在java.util.Scanner.throwFor(未知来源)错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  private static int posNum() {
            Scanner scan = new Scanner(System.in);
            int input = 0;
            boolean error;

            if (scan.hasNextInt()) {
                input = scan.nextInt();
                error = input <= 0;
            } else {
    28          scan.next();
                error = true;
            }
            while (error) {
                System.out.print("Invalid input. Please reenter: ");
                if (scan.hasNextInt()) {
                    input = scan.nextInt();
                    error = input <= 0;
                } else {
                    scan.next();
                    error = true;
                }
            }
            scan.close();
            return input;

        }

所以第二次调用此方法时返回以下内容错误。

So the second time I call this method its returning the following error.

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at q2.CylinderStats.posNum(CylinderStats.java:28)
    at q2.CylinderStats.main(CylinderStats.java:62)

第一个电话是 rad = posNum(); 哪个运行正常,然后secondis height = posNum(); 这不允许在输入错误之前输入值。

The first call is rad = posNum(); which runs fine and then secondis height = posNum(); which doesn't allow a value to be entered before it goes to the error.

谢谢

推荐答案

同时拨打下一步你应该检查扫描仪是否有一个。

while calling next you should check if scanner has one.

 if(scan.hasNext())
 scan.next();

根据扫描仪#next


NoSuchElementException如果没有更多令牌可用

NoSuchElementException if no more tokens are available

您可以更改下面的方法

private static int posNum(Scanner scan) {
    int input = 0;
    boolean error = false;
    if (scan.hasNext()) {
        if (scan.hasNextInt()) {
            input = scan.nextInt();
            error = input <= 0;
        } else {
            scan.next();
            error = true;
        }
    }
    while (error) {
        System.out.print("Invalid input. Please reenter: ");
        if (scan.hasNextInt()) {
            input = scan.nextInt();
            error = input <= 0;
        } else {
            if (scan.hasNext())
                scan.next();
            error = true;
        }
    }
    return input;
}

然后如下调用

    Scanner scan = new Scanner(System.in);
    int i = posNum(scan);
    System.out.println(i);
    int j = posNum(scan);
    System.out.println(j);

这篇关于在java.util.Scanner.throwFor(未知来源)错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆