每次要使用它时,是否必须将字符串解析为double?

时间:2014-05-18 19:24:44

标签: java

我正在编写一个程序,其中应用程序具有输入美元金额的文本字段。

有些方法需要为诸如美元金额小于零的项目抛出异常。在这样做时,我检查了这样的例外:

if (Double.parseDouble(str) <= 0 || Double.parseDouble(str) > 10000)
    throw new InvaildDepositAmount("Deposit Amount " + str);
else
    totalBalance += amount;

我的问题是:每次我想使用此输入时是否需要使用Double.parseDouble(str),例如InvalidDepositAmount类?

3 个答案:

答案 0 :(得分:6)

简单的答案是。您可以解析一次,稍后将其用作变量。

double depositAmount = Double.parseDouble(str);
if (depositAmount <= 0 || depositAmount > 10000)
    throw new InvaildDepositAmount("Deposit Amount " + depositAmount);
else
    totalBalance += depositAmount;

这也更有效率,因为如果对parseDouble的调用很昂贵(也就是说,它需要很长时间才能得到答案)?从长远来看,调用一次会更有效,更容易阅读。

答案 1 :(得分:5)

您可以使用变量。

double x = 0;    
try {    
    double x = Double.parseDouble(str);        
} catch(Exception ex) {
    throw new InvaildDepositAmount("Deposit Amount " + str)    
}
if (x <= 0 || x > 10000) {
    throw new InvaildDepositAmount("Deposit Amount " + str)
}

我认为它使代码可读,但我不确定它是否会使它更有效率,因为编译器或JVM可以注意到并只使用该表达式一次(并完全按我所做的那样做)在代码中:))

答案 2 :(得分:0)

看起来你有以下案例:
1.输入字段只能接受双数字
2.一些接受有限范围的双数的函数

显然,您可以缓存输入的值以避免Double.parseDouble的冗余调用。此外,您应该将该缓存值保持为实际值,并在用户更改输入字段中的值时更新它。

如果与您的功能限制相关的例外,您可以显示一些弹出窗口,或更新状态行或适合您的应用程序的任何内容。或者您可能希望限制输入字段的输入值,并在每次更改后验证值。