Problème avec variable int qui vaut soit 0 soit 1
Bonjour,
J'ai un soucis avec une variable dans mon code. Cette variable, counter, est un compteur mais le problème est que ce variable vaut soit 1 soit 0, alors qu'elle devrait parfois valoir 3, 4 etc. La variable sert en fait à compter le nombre de case contenant des 1 autour de la case courante, dans un tableau rectangulaire constituée de cases. Pourriez-vous jeter un coup d'oeil à mon code pour détecter l'erreur? D'avance merci.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| int height = Integer.parseInt(taille[0]); //je reprends les dimesions du tableau
int width = Integer.parseInt(taille[1]);
int counter;
int [][] tempWorld = new int [height] [width];//il s'agit d'un tableau temporaire
int nombreIteration=1; //nombre d'itération à effectuer
for(int c=0; c <= nombreIteration; c++)
{
for(int j=0; j<width; j++) //cette double boucle compte le nombre de case qui valent 1 autour de la case [j][k] dans le tableau
{
for(int k=0; k<height; k++)
{
counter = 0;
if(j-1 >= 0 && k-1 >= 0 && world[j-1][k-1] == 1) // j'ai mis ces conditions sur le j et k pour ne pas sortir du tableau
counter++;
else if(j-1 >= 0 && world[j-1][k] == 1)
counter++;
else if(j-1 >= 0 && k+1 < height && world[j-1][k+1] == 1)
counter++;
else if(k+1 < height && world[j][k+1] == 1)
counter++;
else if(j+1 < width && k+1 < height && world[j+1][k+1] == 1)
counter++;
else if(j+1 < width && world[j+1][k] == 1)
counter++;
else if(j+1 < width && k-1 >= 0 && world[j+1][k-1] == 1)
counter++;
else if(k-1 >= 0 && world[j][k-1] == 1)
counter++;
//cette partie sert à determiner le nouveau tableau pour la prochaine itération
if((counter == 2 || counter == 3) & world[j][k] == 1)
tempWorld[j][k]=1;
else if(counter <= 1 | counter >= 4)
tempWorld[j][k] = 0;
else if(counter == 3 & world[j][k] == 0)
tempWorld[j][k]=1;
}
}
for(int a=0; a<height; a++) //on recopie le tableau temp. dans le bon tableau
for(int b=0; b<width; b++)
world[a][b] = tempWorld[a][b];
} |