Es posible que la variable no se haya inicializado.

Resuelto David asked hace 14 años • 12 respuestas

Cuando intento compilar esto:

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++ ;
    }

    ...

}

Recibo estos errores:

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

Me parece que los inicialicé en la parte superior del método. ¿Qué pasa?

David avatar Mar 15 '10 23:03 David
Aceptado

Los declaraste , pero no los inicializaste. Inicializarlos es igualarlos a un valor:

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

Obtienes el error porque no has inicializado las variables, pero las incrementas (por ejemplo, a++) en el forbucle.

Las primitivas de Java tienen valores predeterminados, pero como comentó un usuario a continuación

Su valor predeterminado es cero cuando se declaran como miembros de la clase. Las variables locales no tienen valores predeterminados

mipadi avatar Mar 15 '2010 16:03 mipadi

Las variables locales no obtienen valores predeterminados. Sus valores iniciales no están definidos sin asignar valores de alguna manera. Antes de poder utilizar variables locales, deben inicializarse.

Hay una gran diferencia cuando declaras una variable a nivel de clase (como miembro, es decir, como campo) y a nivel de método.

Si declara un campo a nivel de clase, obtendrá valores predeterminados según su tipo. Si declara una variable a nivel de método o como un bloque (significa cualquier código dentro de {}), no obtiene ningún valor y permanece indefinido hasta que de alguna manera obtenga algunos valores iniciales, es decir, algunos valores asignados.

reddy avatar Jan 06 '2013 09:01 reddy