4

レースの結果と、レースが何秒で終了したかを追加できる簡単なプログラムを作成しています。だから時間を入力するために、私はこれをしました:

int time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));

だから私の質問は、ユーザーが正の数以外のものを入力した場合、どうすればユーザーにエラーメッセージを表示できますか?数字を入力するまでエラーが発生するMessageDialogのように。

4

4 に答える 4

11
int time;
try {
    time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
} catch (NumberFormatException e) {
    //error
}

Integer.parseIntNumberFormatExceptionを解析できない場合はをスローしintます。入力が無効な場合に再試行するだけの場合は、次のwhileようなループでラップします。

boolean valid = false;
while (!valid) {
    int time;
    try {
        time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
        if (time >= 0) valid = true;
    } catch (NumberFormatException e) {
        //error
        JOptionPane.showConfirmDialog("Error, not a number. Please try again.");
    }
}
于 2013-01-16T13:53:10.653 に答える
2

Integer.parseInt Integer.parseIntのパラメーターが整数でない場合、NumberFormatExceptionをスローします。tryCatchを使用して、必要なエラーメッセージを表示し、以下のようにwhileループを実行し続けます。

   int   time = -1;
   do{
       try{
            time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
       }
       catch(NumberFormatException e){

       }
   }while(time<=0);
于 2013-01-16T13:57:47.493 に答える
1

が有効な番号でない場合JOptionPane.showInputDialog("Enter seconds")は、次のようになりますNumberFormatException。正の数のチェックについては、チェックするだけです。time >=0

于 2013-01-16T13:52:26.203 に答える
0

あなたがそれをどのように解決したいかに依存します。簡単な方法は、時間を整数として宣言し、次のようにすることです。

Integer time;    
while (time == null || time < 0) {
    Ints.tryParse(JOptionPane.showInputDialog("Enter seconds"));
}

もちろん、それはあなたがグーグルグアバを使用することを要求するでしょう。(他の多くの便利な機能が含まれています)。

別の方法は、上記のコードを使用することですが、標準のtryparseを使用し、NumberFormatExceptionをキャッチし、キャッチでは何もしません。

この問題を解決する方法はたくさんあります。

または、車輪の再発明をせずに、: NumberUtils.isNumberまたはStringUtils.isNumericfromを使用しApache Commons Langます。

于 2013-01-16T13:56:02.540 に答える