变量可能未被初始化错误

87

我尝试编译这个代码:

public static Rand searchCount (int[] x)
{
    int a ;
    int b ;

    ...

    for (int l= 0; l<x.length; l++)
    {
        if (x[l] == 0)
        a++ ;
        else if (x[l] == 1)
        b++ ;
    }

    ...

}

我收到了以下错误信息:

Rand.java:72: variable a might not have been initialized
                a++ ;
                ^
Rand.java:74: variable b might not have been initialized
                b++ ;
                ^
2 errors

在我看来,我是在该方法的顶部初始化它们的。出了什么问题?

12个回答

1

你还没有初始化 ab,只是声明了它们。这有微妙的区别。

int a = 0;
int b = 0;

至少对于C++来说是这样,我想Java应该也是相同的概念。


你不能从C++中派生它。在Java中,局部变量不会自动获得默认值(但如果Java的设计不同,可能会有),但实例和类变量(“静态”)会获得默认值。 - Peter Mortensen

1
将变量"a"设置为类似以下的某个值,例如:
a=0;

声明和初始化是不同的。
祝好运。

不完全是。初始化是声明语法的可选部分。 - user207421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接