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

检查输入是否为数字时出现逻辑错误,如果不是,请重新请求用户输入,直到有效

刘骏祥
2023-03-14

当输入一个无效输入时,它会进入catch块并无限执行catch块,而不会返回try块以获取另一个输入

当输入有效数据时,它工作

public static double getInputNumber(Scanner input){
    double num=0;
    while(true) {
        try {
            num = input.nextDouble();
            return num;
        } catch (Exception ex) {
            System.out.println("Invalid value entered.. Enter again : ");
        }
    }
}

预期-输入无效值时,向用户显示错误消息并重新输入,直到用户输入有效值。

实际值-当输入无效值时,它会在屏幕上反复显示错误消息,而无需重新输入

共有2个答案

莘羽
2023-03-14

只需添加输入。下一个()

} catch (Exception ex) {
   System.out.println("Invalid value entered.. Enter again : ");
   input.next();
}

input.next()清除扫描仪。

隗新霁
2023-03-14

很可能是输入已关闭,或者输入中的下一个标记不是双精度标记。这两种方法中的任何一种都会导致抛出异常,而不会推进输入,从而导致无限循环

因此,您需要找出错误的原因,采取适当的措施,例如:

public static double getInputNumber(Scanner input){
    double num=0;
    while(true) {
              try {
                  num = input.nextDouble();
                  return num;
               } catch (InputMismatchException ex) {
                   System.out.println("Invalid value entered.. Enter again : ");
               } catch (NoSuchElementException ex) {
                   System.out.println("Input exhausted ");
                   return 0;
               } catch (IllegalStateException ex) {
                   System.out.println("Scanner closed ");
                   return 0;
               }
          }
    }
}

你也可以使用输入。调用nextDouble()

 类似资料:
  • 我试图检查用户是否输入了字符串。如果用户输入了字符串,我的程序应该输出错误消息。如果用户输入了整数,我的程序应该继续运行 这是我到目前为止的代码,我需要添加另一个条件来检查用户是否输入字符串,我尝试了一些方法,但它们不起作用

  • 问题内容: 我正在学习“困难方式” Python35。下面是原始代码,我们被要求对其进行更改,以便它可以接受其中不包含0和1的数字。 这是我的解决方案,可以很好地运行并识别浮点值: 通过搜索类似的问题,我找到了一些答案,这些答案可以帮助我编写另一个解决方案,如下面的代码所示。问题是,使用isdigit()不允许用户输入浮点值。因此,如果用户说要取50.5%,它将告诉他们学习如何键入数字。否则它适用

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

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

  • 问题内容: 我正在制作一个简单的程序,可让您添加比赛结果以及完成比赛所用的秒数。所以要输入时间,我这样做: 所以我的问题是,如果用户输入的不是正数,该如何向用户显示错误消息?就像MessageDialog一样,在输入数字之前会提示您错误。 问题答案: 如果无法解析,则会抛出一个。如果您只想在输入无效的情况下重试,则将其包装成这样的循环:

  • 问题内容: 如何检查,如果用户的字符串输入是一个数字(例如等)? 上面的方法不起作用,因为input总是返回一个字符串。 问题答案: 只需尝试将其转换为,然后在无法正常工作时对其进行救助。