0

これを正しく表現しているかどうかはわかりません。配列ポリシー [10] があり、10 個のフロートを保持できます。

初期化時に配列にフロートを追加するメソッドがあります。配列内のすべてのフロートを合計する別の方法があります。問題は、配列の 3/10 しか満たされていないと、null エラーが発生することです。誰かがこれを修正する方法を教えてもらえますか?

policies はクラス Policy のリストです。

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

私のテストでは、配列のサイズを 10 から 3 に変更すると、3/10 の配列があります。

4

4 に答える 4

5

おそらく、null 値を持つ配列の要素がいくつかあると思います。あなたはただ行うことができます:

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

より良い変更はArrayList、のような動的サイズのコレクションを使用することです。これにより、最初に考慮すべき null 値がなくなります。

于 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

試しましたか

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

私のテストでは、配列のサイズを 10 から 3 に変更すると、3/10 の配列があります。

私が正しく解釈できれば、配列で初期化された要素は 3 つだけで、残りの 7 つの要素は初期化されていません。配列を初期化しても、配列要素が初期化されるわけではありません。したがって、デフォルト値を取得します。つまり、 null したがって、 null.mount を呼び出すと、NPEがスローされます。

ヌルチェック:

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