2010-11-13 10 views
5

me sale el error:"no podrían haber sido inicializado"

TestCounter.java:115: variable counters might not have been initialized counters[i] = new Counter(i);

Y no puedo averiguar cómo solucionarlo. Sé que mi clase, Counter, funciona. A continuación está mi código, si pudieras echarle un vistazo, estaría muy feliz. Este código está incluido en el método principal de una clase TestCounter.

if(success) 
    { 
    Counter[] counters; 

    for(int i=0; i<30; i++) 
    { 
     counters[i] = new Counter(i); 
     System.out.println(counters[i].whatIsCounter()); 
    } 
    } 

Respuesta

12

No ha creado la matriz, acaba de declarar la variable.

que tiene que hacer esto:

Counter[] counters = new Counter[30]; 

o algo similar

+0

que funcionó, pero ¿hay alguna manera en la que pueda crear una matriz de tamaño arbitrario? Pensé que eso es lo que hice cuando lo declare:/ –

+0

@Calle: No. Las matrices en Java son de tamaño fijo. Si desea una secuencia de longitud variable, utilice una colección 'List', no una matriz. – skaffman

+0

bien, ¡gracias! :) –

0

Es necesario para inicializar la matriz counters. Algo como esto:

if(success) 
    { 
    Counter[] counters=new Counters[30]; 

    for(int i=0; i<30; i++) 
    { 
     counters[i] = new Counter(i); 
     System.out.println(counters[i].whatIsCounter()); 
    } 
    } 

Al afirmar que no Counter[] counters en realidad está creando una matriz, que son simples declarar una variable de referencia counters de tipo Counter[].

Counter[] counters=new Counters[30] creará una matriz de tipo Counter de tamaño 30 con cada elemento con una referencia nula.

Cuestiones relacionadas