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

捕捉一个输入错误匹配异常,直到它是正确的[重复]

澹台鸿光
2023-03-14

我试图添加捕捉块到我的程序来处理输入不匹配异常。我将我的第一个设置为在do time循环中工作,以给用户纠正问题的机会。

System.out.print("Enter Customer ID: ");
int custID=0;
do {
    try {
        custID = input.nextInt();
    } catch (InputMismatchException e){
        System.out.println("Customer IDs are numbers only");
    }
} while (custID<1);

就目前情况而言,如果我试图输入一个字母,它会进入一个无限循环,即“客户标识仅为数字”。

我怎样才能让它正常工作?

共有3个答案

燕禄
2023-03-14

为什么不使用扫描仪对象读取它与Scanner.readNextInt()

易奇希
2023-03-14

发生的情况是,您捕捉到了不匹配,但仍然需要清除“错误输入”的数字,并重新输入。应该调用next()。编辑:因为您还要求每个do/while的值大于或等于1

boolean valid = false;
while(!valid) {
    try {
        custID = input.nextInt();
        if(custID >= 1) //we won't hit this step if not valid, but then we check to see if positive
            valid = true; //yay, both an int, and a positive one too!
    }
    catch (InputMismatchException e) {
        System.out.println("Customer IDs are numbers only");
        input.next(); //clear the input
    }
}
//code once we have an actual int
秦涵映
2023-03-14

请注意,当扫描仪抛出InputMismatchExcture时,扫描仪不会传递导致异常的令牌,因此可以通过其他方法检索或跳过令牌。

为了避免“客户ID仅为数字”的“无限循环”,您需要调用input。next() ,以便可以在控制台中重新输入number

从…起

陈述

catch (InputMismatchException e) {
            System.out.println("Customer IDs are numbers only");

catch (InputMismatchException e) {
            System.out.println("Customer IDs are numbers only");
            input.next();
        }

测试的示例:

Enter Customer ID: a
Customer IDs are numbers only
b
Customer IDs are numbers only
c
Customer IDs are numbers only
11

 类似资料:
  • 我正在开发一个django应用程序,它可以与几个Amazon Web服务进行通信。 到目前为止,我在处理和捕获boto3客户端抛出的异常方面遇到了困难。我正在做的事情似乎不必要地单调乏味: 例子: 如果令牌坏了,这可能会抛出一个。 可能会抛出一个。 首先,我在代码中的任何地方都找不到这些错误,所以它们可能是在某个地方生成的。一句话:我不能像往常一样导入和捕获它。 其次,我发现了一种方法来捕获错误这

  • 我有这个代码,我想捕捉字母异常,但它一直有以下错误: 这是我的代码:

  • 我在用滑翔4。当URL返回404时,获取FileNotFoundException。我尝试使用RequestListener捕捉异常。但它并没有缓存这个异常。 记录如下: 2019-03-20 17:48:07.134 32233-32233/com。zyta。zflikz带滑翔:装载失败https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAA

  • 我刚开始使用ANTLR4。我试图为一个简单的程序编写语法规则,但我很难让它工作。 null 任何帮助都很感激!

  • 问题内容: 我希望重复我的代码,直到玩家正确猜出为止。 问题答案: 在此处添加- loop。这意味着您将无限次地循环问题,直到获得满意的结果。

  • 我只是在练习java,目前我正在试验getter/setter方法和构造函数。java程序的工作原理是,我能够将用户输入存储到对象中,但当我将字符串“Dice and rollers”输入到gametype字符串变量中时,会出现一个挂起的未捕获异常InputMismatch错误。 有人能给我解释一下这是为什么吗? 另外,我在下面分享了我的源代码。 上面的是超类,下面的源代码是构造函数和getter