Besoin de quelques explications sur la 2D tableaux de Chaîne
Dans le imbriqués for
boucle pour une base 2D tableau de Chaîne, je suis tombé sur ceci:
array = new String [5][10];
for(int i=0; i<array.length;i++)
{
for(int j=0; j<array[0].length;j++)
{
System.out.print(array[i][j]="*");
}
System.out.println("");
}
Maintenant, c'est ce que je veux savoir, pourquoi le deuxième for
déclaration array[0].length
plutôt que array.length
comme dans le for
déclaration devant elle?
Tout ce que je pouvais d'un extrait du présent tandis que l'expérimentation était de savoir si les deux for
déclarations contenues array.length
et le tableau 2D est un 5x10, il serait l'imprimer en 5x5, mais avec array[0].length
il serait d'imprimer un bon 5x10.
Alors pourquoi ce peu d'ajustement, tout régler?
La question cruciale est que d'un tableau 2D est un tableau de tableaux.
Je ne sais pas si vous essayez à un troll.. @__@, je suis bien conscient de cela.
Je ne sais pas si vous essayez à un troll.. @__@, je suis bien conscient de cela.
OriginalL'auteur SelfDeceit | 2012-11-14
Vous devez vous connecter pour publier un commentaire.
Vous avez affaire à un 2D tableau.
array.length
vous donne le nombre de lignes, maisarray[0].length
donne le nombre de colonnes (au moins pour les non-les tableaux irréguliers). Prenez cet exemple:Ici
array.length
est3
(l'ensemble de la 2D tableau est composé de trois 1D-tableaux), maisarray[0].length
est2
(la longueur de de chacun des constituants de la matrice de). Votre premièrefor
-boucle boucles sur l'ensemble de la baie-des-tableaux, mais votre deuxième boucle sur chaque constituante tableau qui est rencontré par la boucle externe. Par conséquent, la boucle interne ne doit en boucle jusqu'à (mais non compris)array[0].length
.array[i].length
au lieu dearray[0].length
qu'arriverait-il?Rien dans ce cas - parce que c'est un place array, donc
array[i].length
sera toujours le même. Si vous aviez un tableau en escalier que vous avez à faire.Même que dans? Et par jagged je suppose que vous voulez dire: 136 479 258
Même que dans
array[i].length
sera toujours le même nombre pour chaquei
(en supposant quei
est dans la gamme). Dans votre cas, il sera toujours10
. Les tableaux irréguliers sont expliqué ici.Ce qu'il
array.length
au lieu de cela, quelle serait la différence.OriginalL'auteur arshajii
Aa tableau 2D est comme une matrice, représenté par un tableau de tableaux de
String
objets. Lorsque vous définissez:Vous disant "je veux un tableau de 5 tableaux de chaîne d'une longueur de 10", quelque chose comme ceci:
Ici:
La première pour itère sur le tableau de cinq
String
tableaux, c'est pourquoi je passe de0
à4
et de la longueur du tableau est de 5. La deuxième pour itère sur les indices de laString[]
les objets contenus sur le premier tableau (celui avec la longueur5
). Ce tableaux ont une longueur de10
éléments.for
àarray.length
quel serait le problème?Comme il y a 5 lignes et 10 colonnes de ce tableau 2D. Par conséquent, dans la première boucle de chaque élément que vous obtenez est une ligne avec 10 chaînes. Donc, vous voulez la deuxième boucle pour exécuter 10 fois. Par conséquent, vous ne array[0].la longueur, qui évalue à 10 et pas de tableau.la longueur, qui évalue à 5
OriginalL'auteur Fritz
C'est parce que
array[0]
est en fait unString[]
tableau.OriginalL'auteur ShyJ
La deuxième
for
déclaration est nécessaire pour obtenir le nombre de colonnes dans le tableau, 10 dans ce cas.array.length
- pas. de lignesarray[0].length
- pas de colonnesCe tableau est supposé place plutôt que de jagged donc à l'aide d'
array[0]
est considéré comme sûr pour une utilisation dans cet exemple.Regardons les mal façon:
En faisant ceci:
vous de l'affichage de 5 x 5 entrées, manque la moitié du nombre d'inscriptions. Aussi, si le tableau avait été à l'origine de 10 lignes x 5 colonnes, une
ArrayIndexOutOfBoundsException
aurait été lancers que le nombre de colonnes de a été dépassé lors de laj = 5
.Une façon pratique de l'affichage 2D tableaux est:
for
déclarations contenuesarray.length
quel serait le problème? Serait-il juste de créer un "carré de type" tableau en prenant seulement le nombre de lignes que le nombre de colonnes?En utilisant
array.length
dans la deuxièmefor
boucle, seulement la moitié de laString
valeurs seraient assignés & le reste resteraitnull
.OriginalL'auteur Reimeus