0

我不确定我的措辞是否正确。我有一个数组策略[10],它可以容纳 10 个浮点数。

我有一个方法可以在初始化时向数组添加一个浮点数。我有另一种方法可以将数组中的所有浮点数加起来。问题是当我只有 3/10 的数组被填满时,我得到一个空错误。有人可以告诉我如何解决这个问题吗?

policy 是一个类 Policy 的列表。

public float totalCoverage(){
    float total = 0;
    for (Policy x : policies){
        total += x.amount;
                }
    return total;
}

对于我的测试,我有 3/10 数组,如果我将数组大小从 10 更改为 3,它可以工作。

4

4 回答 4

5

好吧,大概您的数组中有一些元素具有空值。你可以这样做:

for (Policy x : policies) {
    if (x != null) {
        total += x.amount;
    }
}

更好的更改是使用动态大小的集合,例如ArrayList,这样一开始就不需要考虑空值。

于 2013-02-05T11:50:38.857 回答
0
public float totalCoverage(){

    float total = 0;
    for (int i = 0; i < array.length;i++){
       if(array[i] != null)
          total = total + array[i]
                }
       return total;
}
于 2013-02-05T11:53:09.383 回答
0

Did you try

public float totalCoverage(){
    float total = 0;
    for (Policy x : policies){
        if (x != null)
        total += x.amount;
                }
    return total;
}
于 2013-02-05T11:51:02.463 回答
0

For my test, I have 3/10 arrays, if i change the array size from 10 to 3, it works.

If i can interpret correctly, you only have 3 elements initialized in your array, remaining 7 elements are not initializaed, initializing the array doesn't mean that array elements are initialized. thus they get their default value. i..e, null thus when you call null.amount it throw NPE.

Null check :

for (Policy x : policies) {
    if (x != null) {
        total += x.amount;
    }
    else {
         System.out.println("x is null");
     }
}
于 2013-02-05T11:51:18.530 回答