1

我正在学习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

4

2 回答 2

2

你不需要NumberFormatException因为Double.parseDouble()它为你照顾它。如果它不是正确的数字(在本例中为 a Double),则该parseDouble()方法将为您抛出 a 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());
    }
于 2011-12-25T23:39:34.447 回答
0

当用户告诉程序接受并处理输入时,您可能希望验证您的输入。在这部分代码中,您将通过 解析try/catch 块中的输入将字符串转换为数字,然后如果遇到异常,通知用户错误,阻止进一步处理,并可能清除任何违规行为输入字段(如果存在)。

于 2011-12-25T23:28:54.110 回答