【问题标题】:How do stop user from entering string or char when I am asking for double?当我要求加倍时,如何阻止用户输入字符串或字符?
【发布时间】:2013-10-25 02:40:56
【问题描述】:

所以当我做这样的事情时。我试图弄清楚如何阻止用户简单地输入字符或字符串并产生运行时错误。我不确定如何在这里过滤输入:

      System.out.println("Please enter the degree of difficulty"
               + " for this dive");

       while(degreeOfDifficulty > 3.8 || degreeOfDifficulty < 1.2)
       {
            degreeOfDifficulty = scanner.nextDouble();
       }

如果您在此处输入字符或字符串,显然会产生错误。请帮忙!谢谢。

【问题讨论】:

  • 投了反对票,因为问题不是很清楚。
  • 查看 Java 异常处理。谷歌“Java:如何处理异常”。

标签: java filter double


【解决方案1】:

使用scanner.hasNextDouble() 代替try...catch

它给出输入中的下一个标记是否是有效的double。然后,您可以使用scanner.nextDouble() 获取它,或者使用scanner.next() 忽略该令牌。

【讨论】:

    【解决方案2】:

    你可以为你的 while 循环设置一个条件。

    boolean invalidInput = false;
    while(!invalidInput && (degreeOfDifficulty > 3.8 || degreeOfDifficulty < 1.2))
    {
    
        try {
            degreeOfDifficulty = scanner.nextDouble();
            invalidInput = false;
        } catch (Exception e) {
            System.out.println("Your entry was invalid, please enter a double.");
            invalidInput = true;
        }
    }
    

    【讨论】:

      【解决方案3】:

      最简单的方法是使用 try 和 catch

      【讨论】:

      【解决方案4】:

      这个对我有帮助。!!

      如下创建一个布尔方法。

      private boolean preventNonestring(String str) {
          Pattern p = Pattern.compile("[^a-z A-Z]");
          return p.matcher(str).find();
      }
      

      然后使用如下方法

      if(preventNonestring(yourtext)){ 
       //Do something here when true
      }else{ 
      //Your error message here when false
      
       }
      

      【讨论】:

        【解决方案5】:

        你可以使用模式

        模式 p = Pattern.compile("[^a-z A-Z]");

        然后检查渲染的角色是否有字符
        p.matcher(str).find();

        同时使用 try 和 catch 来避免运行时错误

        【讨论】:

          猜你喜欢
          • 2019-09-19
          • 1970-01-01
          • 2015-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-27
          • 1970-01-01
          • 2017-01-11
          相关资源
          最近更新 更多