言語解析中:Java(登録商標)、IDE:プログラムが正の値のため(のJOptionPaneを使用して)ユーザを促すことになっている火星ループはDouble.IsNaN不適切
日食。私は無効なエントリをキャッチしようとしています。私のwhileステートメントは負の数値をキャッチしますが、文字列はキャッチしません。負の数を入力すると、プロンプトが再度表示されますが、文字列の値を入力すると例外が捕捉され、プログラムが実行されます(ユーザにプロンプトが表示されるはずです)。
正の値が入力されると、プログラムはそれを別のクラスの値に割り当てます。 (私たちはMVCのOOPデザインパターンを学んでいます)。
Double.isNaN(Double.parseDouble(h))--->誰も私が逃しているものを見つけるのを助けることができますか?
// prompt to get bandwidth from user
// check for validity
// if invalid, prompt again
try{
h = JOptionPane.showInputDialog("Enter bandwidth as a positive number");
// loop until parsed string is a valid double
while (Double.isNaN(Double.parseDouble(h)) || Double.parseDouble(h) <=0) {
h = JOptionPane.showInputDialog("Enter bandwidth as a positive number");
}
// h has been set to valid double, set it to bandwidth
model.setBandwidth(Double.parseDouble(h));
}catch(NumberFormatException|NullPointerException NFE){
System.err.println("Caught exception: " + NFE.getMessage());
}
はdoubleとして直接入力を解析し、例外を認識するようにしてみてください... –
'てみてください/ catch' 'while'ループの中にいる必要があります。 – 4castle
@ NaNは、通常、無限の値を表現するためのものです。正と負の無限大には別々の値があります。 – shmosel