当前位置: 首页 > 知识库问答 >
问题:

使用异常检查输入是否为整数-Java

戴鸿羽
2023-03-14

我的方法必须请求用户输入,检查它是否是整数,如果是,则返回该整数。我尝试了使用try-catch和inputmaschException。

当它循环时,我遇到了一个问题,如果我输入一个非整数,它会不断地抛出“无效输入”“输入整数:”而不是实际要求输入一个。

public int getInteger(){
    Scanner i = new Scanner(System.in);
    int value = 0;

    for(boolean test = false; test == false;){
        try{
        System.out.println("Enter an integer: ");
        value = i.nextInt();

        test = true;
        return value;
        }
        catch(InputMismatchException e){System.out.println("Invalid input");}
    }
    return value;
} 

共有2个答案

刘畅
2023-03-14

我建议您在nextInt()之前调用hasNextInt(),而不是试图捕获Exc0019。类似于,

public int getInteger() {
    Scanner scan = new Scanner(System.in);
    while (scan.hasNextLine()) {
        if (scan.hasNextInt()) {
            return scan.nextInt();
        } else {
            System.out.printf("%s is not an int%n", scan.nextLine());
        }
    }
    return -1;
}
谢正初
2023-03-14

你需要一个i.nextLine() 在循环的末尾。

    catch(InputMismatchException e){System.out.println("Invalid input");}
    i.nextLine();
}

这样做的目的是从输入流中读取新的行字符,i.nextInt()。这也是你的i.nextInt()在后续调用中不断出错的原因。

 类似资料:
  • 我需要检查用户输入的内容是否正确。如果不是,我需要以msgbox的形式打印错误。 上面的代码似乎不起作用。 有什么想法吗?

  • 我试图创建一个简单的程序,从用户输入中提取两个数字,并将它们相加在一起。为了正确使用它,我已经把它放下来了,但是如果用户输入其他东西,比如字符串,我会试图阻止崩溃。我如何检查输入而没有异常,因为我听说它们是糟糕的做法? 理想情况下,我希望它只是重复最初的问题,要求输入一个数字。我想这会在一个循环中? 编辑:新代码 旧代码

  • 我有一个操作/方法来执行对数据库的插入。它需要几个字段,由于各种原因,操作可能会失败,因为一个或多个输入不是唯一的,或者因为它们与一些需要唯一的内部记录冲突。 反对这种方法的人指出,我们开发团队知道会导致失败的每个错误情况,应该返回错误代码并使用它来处理每个情况。 我看不出检查方法有任何明显的缺点。这些错误情况很有可能发生,您绝对必须在使用saveUserInfo()的任何地方解决它们。似乎正是为

  • 我正在尝试创建一个简单的程序来验证用户的输入是否为正整数。但是,在使用Scanner.hasNextInt()方法时遇到了一个问题。如果输入包含一个整数,比如“5个6”,我的程序将把6读入为一个整数。但是,我希望这样的语句无效,并提示用户只需要输入一个整数值。因此程序将输出“请输入整数值:”。 这就是我的程序的样子: 编辑:我理解next()与nextLine()之间的区别。然而,我的问题是实际仅

  • 问题内容: 如何检查Java整数是否为另一个数字的倍数?例如,if 是4的倍数。 问题答案: 使用余数运算符(也称为模运算符),该运算符返回除法的余数,并检查其是否为零:

  • 问题内容: 如何检查给定的输入控件是否为空?我知道该字段上有一个属性,该属性告诉您给定的字段最初是否为空,但是如果有人填充该字段并再次提取整个内容该怎么办? 我认为上述功能是必要的,因为它对告知用户该字段必不可少。 任何想法将不胜感激! 问题答案: 很简单: 您也可以使用代替,如果这对您来说更自然。 更好的替代方法可能是真正利用Angular的形式能力: 在此处更新了Plnkr。