2010-11-13 16 views
5

ottengo l'errore:"non sarebbe stato inizializzato"

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

E io non riesco a capire come risolvere il problema. So che la mia classe, Counter, funziona. Di seguito è riportato il mio codice, se potessi dargli un'occhiata sarei molto felice. Questo codice è incluso nel metodo principale di una classe TestCounter.

if(success) 
    { 
    Counter[] counters; 

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

risposta

12

Non hai creato l'array, hai appena dichiarato la variabile.

Hai bisogno di fare questo:

Counter[] counters = new Counter[30]; 

o qualcosa di simile

+0

ha funzionato, ma c'è un modo in cui posso creare un array di dimensioni arbitrarie? Ho pensato che fosse quello che ho fatto quando l'ho dichiarato:/ –

+0

@Calle: No. Le matrici in Java sono a dimensione fissa. Se vuoi una sequenza di lunghezza variabile, usa una collezione 'List', non una matrice. – skaffman

+0

ok, grazie! :) –

0

È necessario inizializzare l'array counters. Qualcosa di simile a questo:

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()); 
    } 
    } 

Affermando Counter[] counters non sono in realtà creazione di un array, si sono semplici dichiarazione di una variabile di riferimento counters di tipo Counter[].

Counter[] counters=new Counters[30] creerà un array di tipo Counter di dimensione 30 con ciascun elemento contenente riferimento null.

Problemi correlati