2

私はメソッドを持っていますpublic int bar()、そこで私はint total(メソッド本体ofcで)を宣言しました。したがって、これは単純なローカル変数である必要があります。これは、日食が不平を言うことです。

Description Resource    Path    Location    Type
The local variable total may not have been initialized  Repository.java /proj_individual/src/repo   line 35 Java Problem

一般的な例:

public int foo(){
    int total;
    for(... : ...){
        total += 1; // complains
    }
    return total;// complains
}

と私の正確なコード:

public int getLocatars(){
    int total;
    for ( Map.Entry<Apartment, List<Expense>> entry : dic.entrySet() ) {
        if(entry.getKey().isDebt()){
            total += entry.getKey().getNrProple();
        }
    }
    return total;
}

何を間違えたのかわからないので、どんなアイデアでも参考になります、ありがとうございます。

4

2 に答える 2

6

変数に値が明確に割り当てられていないため、変数を読み取ることができません。

エントリセットが空であるか、エントリがない場合を想像してみてくださいdebt...どの値を返しますか?

それ以上に、ループの最も内側の部分に入ったとしても、どの初期値に追加されると思いますか?

静的フィールドやインスタンスフィールドとは異なり、ローカル変数にはデフォルト値がありません。読み取る前に、ローカル変数に値を割り当てる必要があります。私はあなたがただ欲しいと思う:

int total = 0;
于 2012-11-26T17:44:05.800 に答える
4

次の場所から変更します。

int total;

に:

int total = 0;

理解を深めるには、宣言と初期化の違いを参照してください。

于 2012-11-26T17:44:34.380 に答える