2010-11-13 4 views
5

je reçois l'erreur:« pourrait ne pas avoir été initialisé »

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

Et je ne peux pas comprendre comment y remédier. Je sais que ma classe, Counter, fonctionne. Voici mon code, si vous pouviez y jeter un coup d'œil, je serais très heureux. Ce code est enveloppé dans la méthode principale d'une classe TestCounter.

if(success) 
    { 
    Counter[] counters; 

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

Répondre

12

Vous n'avez pas créé le tableau, vous venez de déclarer la variable.

Vous devez faire ceci:

Counter[] counters = new Counter[30]; 

ou quelque chose de similaire

+0

qui a fonctionné, mais existe-t-il un moyen de créer un tableau de taille arbitraire? Je pensais que c'est ce que j'ai fait quand je l'ai déclaré:/ –

+0

@Calle: Non. Les tableaux en Java sont de taille fixe. Si vous voulez une séquence de longueur variable, utilisez une collection 'List', pas un tableau. – skaffman

+0

Très bien, merci! :) –

0

Vous devez initialiser le tableau counters. Quelque chose comme ceci:

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

En déclarant Counter[] counters vous ne créez pas en fait un tableau, vous êtes simplement déclarer une variable de référence counters de type Counter[].

Counter[] counters=new Counters[30] va créer un tableau de type Counter de taille 30 avec chaque élément contenant une référence nulle.

Questions connexes