有多种可能发生运行时错误calculateHours()
:
hourArray
是null
并抛出一个NullPointerException
- any
hourArray[i]
为 null 并抛出一个NullPointerException
hourArray[i].getText()
无法解析为 aDouble
并抛出 aNumberFormatException
- 您的
hourArray
可能包含少于 7 个元素,这会引发IndexOutOfBoundsException
除此之外,这hourArray[i].getText() != ""
是一个不好的比较,因为它不检查null
并检查两个对象是否是同一个对象,而不是它们是否相等。
另外,我猜你想sum += hour
在循环里面有,否则sum
会包含最后一个值hourArray
。
因此,您的方法应如下所示:
public String calculateHours (){
double sum = 0;
if(hourArray != null){ // hourArray might be null
double hour = 0;
for (int i = 0; i < hourArray.length; i++) { // use .length here
// check for nulls and empty String
if (hourArray[i] != null && hourArray[i].getText() != null
&& !"".equals(hourArray[i].getText())) {
try{ // the text might can not be parsed to a double
hour = Double.parseDouble(hourArray[i].getText());
}catch(NumberFormatException ex){
hour = 0;
}
}
else {
hour = 0;
}
sum += hour; // I guess you want that inside your loop
}
}
return String.format("%.2f", sum);
}
无论如何,如果这个类的编写方式不必检查calculateHours()
方法中的所有这些可能性,那就更好了。您会注意到,如果必须在此处完成所有这些检查,阅读将变得多么困难。