当我要求加倍时,如何阻止用户输入字符串或字符?

时间:2013-10-25 02:40:57

标签: java filter double

所以当我做这样的事情的时候。我试图找出如何阻止用户简单地输入字符串或字符串并产生运行时错误。我不知道如何过滤输入:

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

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

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

你的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;
    }
}

答案 2 :(得分:0)

最简单的就是使用try和catch

答案 3 :(得分:0)

这个帮助了我。!!

创建一个布尔方法,如下所示。

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

 }

答案 4 :(得分:0)

您可以使用模式

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

,然后检查渲染的字符是否包含字符
p.matcher(str).find();

还可以使用try and catch来避免运行时错误