我正在学习Java,并且正在尝试制作一个非常简单的应用程序来进行货币转换。您输入汇率,方向(例如:从欧元到美元或反向)和金额。数字为有效的非负数。
到目前为止,我设法做到了这一点,以使数字不能为负。现在,如果不是数字,我需要抛出一个错误。
我有以下代码:
public void setKoers(double koers)
throws NegativeValueException, NumberFormatException{
if (koers > 0 ) {
this.koers=koers;
} else {
throw new NegativeValueException("negative number");
}
}
而我的主要看起来像
try {
cal.setKoers( Double.parseDouble(args[0]));
} catch(NegativeValueException e) {
System.out.println(e.getMessage());
} catch (NumberFormatException e) {
System.out.println( e.getMessage());
}
因此,如何检查
koers
是否为数字。我知道我可以尝试在代码中捕获错误,但是我认为这与在哪里以及如何处理错误的逻辑背道而驰:在我的主要函数中,我应该捕获任何NumberFormatException
最佳答案
您不需要NumberFormatException
,因为Double.parseDouble()
会为您处理。如果它不是正确的数字(在本例中为Double
),则parseDouble()
方法将为您抛出NumberFormatException
。
这是我的写法:(只需取出NumberFormatException
)
public void setKoers(double koers) throws NegativeValueException {
if (koers > 0 ) {
this.koers=koers;
} else {
throw new NegativeValueException("negative number");
}
}
try{
cal.setKoers( Double.parseDouble(args[0]));
} catch(NegativeValueException e) {
System.out.println(e.getMessage());
} catch (NumberFormatException e) {
System.out.println( e.getMessage());
}