語言:Java中,IDE:日食火星while循環解析Double.IsNaN不當
程序應該提示用戶(使用的JOptionPane)爲正值。我試圖抓住無效的條目。我的聲明抓住了負數,但不是字符串。當輸入負數時,會再次顯示提示,但是當輸入字符串值時,將捕獲異常並且程序繼續運行(當它應該重新提示用戶時)。
一旦輸入正值,程序就會將它賦值給另一個類中的值。 (我們正在學習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());
}
嘗試分析直接輸入爲雙並意識到異常的... –
的'嘗試/ catch'需要在'while'循環中。 – 4castle
@ΦXocę웃Pepeúpaツ* NaN通常代表無限值。*不是真的。正負值無窮大有單獨的值。 – shmosel