-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 に答える