2009-06-10 7 views
0

Suis-je juste aveugle pour voir la solution?Correction rapide Java Erreur ArrayIndexOutOfBoundsException

sampleSum = 0; 
for(int x : sampleWeights) 
    sampleSum += x; 

population = new int[sampleSum]; 
int z = 0; 

for(int i = 0; i < nsamples; i++) 
for(int j = 0; j < sampleWeights[i]; j++) 
{ 
    population[z] = i; 
    z++; 
} 

Toute aide est appréciée! Merci!

+0

Veuillez formater le code - cela nous guérit de la cécité :-) –

+1

Plus de code nécessaire. D'où vient: nsamples? Aussi, as-tu instancié la population [z]? En outre, quelle ligne obtenez-vous votre exception hors limites? – Alex

+0

Il n'y a pas assez de code ici, où les nsamples sont-ils déclarés (entre autres choses)? Peut-être que c'est> sampleWeights.length. – stevedbrown

Répondre

2

Si tous les samplesWeights sont à zéro, sampleSum sera zéro et population.length = 0. Donc, quand vous faites la population [z], il y aura une exception ArrayIndexOutOfBoundsException.

+0

Si sampleWeights [i] est zéro, il n'y aura pas d'exécution de population [z]. –

+0

Semble fonctionner. En attente de la conformation. –

+0

fonctionne! merci daniel! –

1

Je présume que vous avez N entiers, N = # Échantillons x # poids/échantillon (i)?

Si tel est le cas, d'où avez-vous obtenu le tableau sampleWeights (ou Liste d'autoboxing de Integers)?

Exécutez à nouveau votre code avec System.out.println pour collecter les informations de débogage et vous verrez rapidement ce qui ne va pas.