当前位置: 首页 > 面试题库 >

在java.util.Scanner.throwFor(未知源)错误

湛博易
2023-03-14
问题内容
  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;

        }

因此,第二次调用此方法将返回以下错误。

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();运行良好,然后第二个调用运行,height = posNum();不允许在错误发生之前输入值。

谢谢


问题答案:

打电话时next,应检查扫描仪是否有一个。

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

根据Scanner#next的
Java文档

NoSuchElementException如果没有更多标记可用

您可以如下更改方法

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);


 类似资料:
  • 问题内容: 我有一个具有以下依赖关系的层次结构: 里面还有其他依赖项,但我不会走那么远,因为看来我的错误发生的时间早得多。与该依赖关系图相对应,我具有以下Spring配置: 在应用程序的顶层,我将运行: 在进行调试时,我发现初始化成功。。。有些。在完全解析并注入之前,我得到以下信息: 我一直在追溯它,这是我的堆栈跟踪中唯一的类。 删除Java和XML中的所有三个构造函数参数都可以解决此问题,但是引

  • 我不知道如何为所有文件类型添加自定义元数据,如txt,doc,docx,xls,xlsx,ppt,pptx,pdf等。我已经尝试使用文件类setAttribute()方法为txt文件添加自定义元数据,但我得到了错误。 我没有得到我要错的地方...我得到了下面的错误

  • 为什么程序不起作用?当我在第一个问题上输入'1',然后在第二个问题上输入一些东西时,出现了一个红色文本:(程序没有完成,但它应该能工作,不是吗?) 线程“main”Java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0在Java.lang.String.Charat(String.Java:658)在javaApplication2.javaAp

  • 我试图按照https://docs.angularjs.org/tutorial的教程操作,但在运行该命令时出错 Angulal-PhoneCat@0.0.0 postinstall c:\git\Angulal-paractions\Angulal-PhoneCat bower install Angulal-PhoneCat@0.0.0update-webdriver C:\git\Angul

  • 问题内容: 我试过下面的代码 我正在 谁能帮我解决这个问题? 问题答案: 简单的解决方法是将List传递到的构造函数中。 例如: 响应: 真删除标志 集合[2,3,4]

  • 问题内容: 我对Go真的很陌生,su只在这里忍受我。我正在尝试使用以下代码编写将mysql数据加载到Redis集群的代码:redis-go- cluster , load2redis 这是代码。它有点长,请在这里忍受。 当我执行它时,出现以下异常: 有人可以向我解释我在做什么错吗?我将不胜感激。 问题答案: 如前所述,不适用于地图。这是您可以解决它的一种方法。 Do方法映射到Redis命令集,并且