我正在编写一个程序,其中应用程序具有输入美元金额的文本字段。
有些方法需要为诸如美元金额小于零的项目抛出异常。在这样做时,我检查了这样的例外:
if (Double.parseDouble(str) <= 0 || Double.parseDouble(str) > 10000)
throw new InvaildDepositAmount("Deposit Amount " + str);
else
totalBalance += amount;
我的问题是:每次我想使用此输入时是否需要使用Double.parseDouble(str)
,例如InvalidDepositAmount
类?
答案 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的冗余调用。此外,您应该将该缓存值保持为实际值,并在用户更改输入字段中的值时更新它。
如果与您的功能限制相关的例外,您可以显示一些弹出窗口,或更新状态行或适合您的应用程序的任何内容。或者您可能希望限制输入字段的输入值,并在每次更改后验证值。