【发布时间】:2017-06-25 01:22:33
【问题描述】:
语言:Java,IDE:eclipse mars
程序应该提示用户(使用 JOptionPane)输入一个正值。我正在尝试捕获无效条目。我的 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());
}
【问题讨论】:
-
尝试将输入直接解析为双精度并注意异常...
-
try/catch需要在while循环内。 -
@ΦXocę웃Пepeúpaツ NaN 通常用于表示无限值。 并非如此。正无穷和负无穷有不同的值。