-2

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

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

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

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

4

5 回答 5

2

使用scanner.hasNextDouble()而不是try...catch.

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

于 2013-10-25T02:46:20.327 回答
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;
    }
}
于 2013-10-25T02:44:50.210 回答
0

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

于 2013-10-25T02:45:43.550 回答
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

 }
于 2017-02-17T16:41:31.270 回答
0

您可以使用模式

模式 p = Pattern.compile("[^az AZ]");

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

也可以使用 try 和 catch 来避免运行时错误

于 2018-11-07T06:52:43.093 回答