2012-04-07 1 views
0

J'ai un tableau 2D mais si je change de coordonnées x, chaque fois que je me trompe de résultat.mauvaises valeurs de tableau

int[][] arr = {{0, 2, 0, 0, 1},{0, 2, 0, 0, 1},{0, 2, 0, 0, 1},{0, 2, 0, 0, 1},{0, 2, 0, 0, 1}}; 
int now, previous; 

    for (int i = 1; i < 5; i++) { 
    for (int j = 0; j < 5; j++) { 
     now = arr[i][j]; 
     previous = arr[i-1][j]; 
     } 
    } 

Le résultat de la variable est maintenant 0, 2, 0, 0, 1 ... Pourquoi je veux avoir seulement 2, 0, 0, 1 Si je change de la variable i coordonne pour l'exemple i = 1 la sortie est toujours 0, 2, 0, 0, 1 ... Savez-vous où est le problème? Merci

+0

Où vous imprimez la variable 'now'? Si vous l'imprimez dans la seconde boucle, vous devriez avoir 4 x 5 = 20 sorties. – Tudor

+0

Quel est le point de toutes ces boucles, si 'now' et' previous' seront réglés sur 'arr [4] [4]' et 'arr [3] [4]' de toute façon? – dasblinkenlight

Répondre

0

parce que i correspond au tableau externe dans votre exemple. ce que vous avez imprimera 0, 2, 0, 0, 1 quatre fois. Je comprends ce que vous voulez est de montrer 2, 0, 0, 1 cinq fois ... pour que vous devriez faire

for (int i = 0; i < 5; i++) { 
for (int j = 1; j < 5; j++) { 
    now = arr[i][j]; 
    previous = arr[i-1][j]; 
    } 
} 
0

Vous devez mettre j = 1 au lieu de j = 0.

La variable i est itérez les vecteurs qui composent votre tableau, tandis que la variable j est itérez chaque élément d'un de ces vecteurs . Vous voulez ignorer le premier élément de chaque vecteur, donc vous devez changer j pour commencer à 1 au lieu de 0.

Dans tous les cas, vous répétez l'attribution dans une boucle, et seulement la dernière valeur affectée aux variables sera gardé. Donc, en supposant que ce soit le code original que vous utilisez, vous devriez supprimer les boucles "for" et faire les attributions directement, en supposant que votre tableau arr ne changera pas.

Questions connexes