首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将java.util.InputMismatchException固定在nextInt()的第二步

将java.util.InputMismatchException固定在nextInt()的第二步
EN

Stack Overflow用户
提问于 2019-01-13 23:46:18
回答 1查看 38关注 0票数 2

我正在编写一个非常简单的程序,从用户那里获得3个into,并希望在将它们存储到单独的变量中进行处理之前,检查它们是否都是into。我使用的检查对第一个输入有效,但是失败,并在第二个输入中抛出异常。

代码语言:javascript
代码运行次数:0
运行
复制
boolean properInt = scanner.hasNextInt();
    int largest = Integer.MAX_VALUE;
    boolean anError = false;


    while(properInt=false){
        anError=true;
        System.out.println("Invalid number...whole numeric values only");
    }

    while(properInt =true){

    int a= scanner.nextInt();
        System.out.println("you entered "+ a);
    int b = scanner.nextInt();
        System.out.println("you entered "+ b);
    int c= scanner.nextInt();
        System.out.println("you entered "+ c);

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-14 00:10:34

原因是当您使用任何一个nextXxx(...)时,扫描器光标会被重置到调用之前的位置。输入有效数字后按下“enter”键时,扫描仪将忽略“字符”(enter)。但是,当输入无效值时,会引发异常,下一个“nextInt”将enter键字符视为另一个条件,因此无法工作。

我建议使用nextLine,然后使用Integer.ParseInt和捕捉NumberFormatException

同时,您的while循环检查是不正确的。

代码语言:javascript
代码运行次数:0
运行
复制
properInt=false is a statement.

while(properInt==false) is a condition..

英语不是我的强项,所以如果它让我困惑的话,请告诉我。

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

https://stackoverflow.com/questions/54174269

复制
相关文章

相似问题

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