Es posible que la variable no se haya inicializado.
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?
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 for
bucle.
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
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.