我正在学习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());
    }

07-28 03:35
查看更多