一尘不染

变量可能没有初始化错误?

java initialized

当我尝试编译时:

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

在我看来,我在方法的顶部初始化了它们。怎么了


阅读 439

收藏
2020-01-10

共1个答案

一尘不染

你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值:

int a;        // This is a declaration
a = 0;        // This is an initialization
int b = 1;    // This is a declaration and initialization

因为未初始化变量,但a++for循环中增加了变量(例如),所以会收到错误消息。

Java原语具有默认值,但如下一位用户所述

当声明为类成员时,它们的默认值为零。局部变量没有默认值

2020-01-10