2010-11-08 2 views
0

J'ai essayé de faire:Comment traverses-tu int [] []?

for (int i=0; i<matrix.length; i++) { 
    for (int j=0; j<matrix[].length; j++) { 

mais cela ne fonctionne pas :(

+0

En fait, si c'est une matrice carrée, alors c'est facile. – Devoted

Répondre

8

Juste index dans la matrice en utilisant votre ligne actuelle

for (int i=0; i<matrix.length; i++) { 
    for (int j=0; j<matrix[i].length; j++) { 
    // code 
    } 
} 

Ce même des facteurs dans la. possibilité d'une jagged array (c'est-à-dire, une matrice avec un nombre incohérent de lignes dans la colonne)

5
for (int i=0; i<matrix.length; i++) { 
    for (int j=0; j<matrix[i].length; j++) { 
2
for (int i=0; i<matrix.length; i++) { 
    for (int j=0; j<matrix[i].length; j++) { 

Notez le i que j'ai ajouté.

Cependant, il est préférable de mettre en cache les deux longueurs en boucle pour éviter la réévaluation de chaque boucle, ce qui fait gagner du temps au seul coût d'une plus int en mémoire (le correctif est toujours valable):

for (int i=0, il=matrix.length; i<il; i++) { 
    for (int j=0, jl=matrix[i].length; j<jl; j++) { 
bien
+0

Notez que la mise en cache des longueurs de tableau ne fonctionnera que si le tableau ne se redimensionne pas dans la boucle. – Bitsplitter

+0

C'est vrai. C'est bon pour si vous ne changez pas la taille, mais seulement la lecture ou l'écriture. –