レースの結果と、レースが何秒で終了したかを追加できる簡単なプログラムを作成しています。だから時間を入力するために、私はこれをしました:
int time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
だから私の質問は、ユーザーが正の数以外のものを入力した場合、どうすればユーザーにエラーメッセージを表示できますか?数字を入力するまでエラーが発生するMessageDialogのように。
int time;
try {
time = Integer.parseInt(JOptionPane.showInputDialog("Enter seconds"));
} catch (NumberFormatException e) {
//error
}
Integer.parseInt
NumberFormatException
を解析できない場合はをスローし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.");
}
}
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);
が有効な番号でない場合JOptionPane.showInputDialog("Enter seconds")
は、次のようになりますNumberFormatException
。正の数のチェックについては、チェックするだけです。time >=0
あなたがそれをどのように解決したいかに依存します。簡単な方法は、時間を整数として宣言し、次のようにすることです。
Integer time;
while (time == null || time < 0) {
Ints.tryParse(JOptionPane.showInputDialog("Enter seconds"));
}
もちろん、それはあなたがグーグルグアバを使用することを要求するでしょう。(他の多くの便利な機能が含まれています)。
別の方法は、上記のコードを使用することですが、標準のtryparseを使用し、NumberFormatExceptionをキャッチし、キャッチでは何もしません。
この問題を解決する方法はたくさんあります。
または、車輪の再発明をせずに、:
NumberUtils.isNumber
またはStringUtils.isNumeric
fromを使用しApache Commons Lang
ます。