2

我有一个方法public int bar(),我在其中声明了一个int total(在方法体 ofc 中)。所以这应该是一个简单的局部变量,问题是eclipse抱怨

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 回答