2010-04-14 10 views
1

J'ai beaucoup cherché sur Google pour obtenir des tutoriels à comprendre à partir de tableaux 3D, mais il semble que tous les tutoriels sont dans des tableaux 2-D. J'ai donc besoin d'une petite explication pour comprendre les tableaux 3D.Aide Pour comprendre les tableaux multidimensionnels

Je comprends très bien les réseaux bidimensionnels, mais j'ai du mal à comprendre les réseaux dimensionnels 3 et 4, etc. Je sais que les tableaux 2-D représentent les lignes et les colonnes, mais qu'en est-il de ces tableaux 3D:

Ma compréhension du code ci-dessous est qu'il devrait y avoir 3 lignes et 4 colonnes, mais le 5 à la dernière position le fait semble différent. J'ai besoin d'aide pour comprendre pourquoi il y a 12 lignes et 5 colonnes. Et aussi si vous pouvez m'aider à comprendre les tableaux 4 ou 5-D

Merci.

class ThreeDMatrix 

{ 

public static void main(String[] args) 

{ 

int threeD[][][] = new int[3][4][5]; 

int i,j,k; 

for (i=0; i<3; i++) 

for(j=0; j<4; j++) 

for (k=0; k<5; k++) 

threeD[i][j][k]= i*j*k; 


{ 

for(i=0; i<3; i++) 

for(j=0; j<4; j++){ 

for (k=0; k<5; k++) 

{ 

System.out.print("-" + threeD[i][j][k]); 

} 

System.out.println(); 

} 

System.out.println(); 

} 

} 
} 

SORTIE:

-0-0-0-0-0 

-0-0-0-0-0 

-0-0-0-0-0 

-0-0-0-0-0 

-0-0-0-0-0 

-0-1-2-3-4 

-0-2-4-6-8 

-0-3-6-9-12 

-0-0-0-0-0 

-0-2-4-6-8 

-0-4-8-12-16 

-0-6-12-18-24 

S'il vous plaît désolé pour le rendu pauvre du code. Je ne sais pas vraiment comment utiliser les balises de code correctement. Si quelqu'un me montre alors je vais le republier. merci

+0

Dans la colonne à droite de l'éditeur de message, vous pouvez voir les règles de formatage et un lien vers une référence de formatage complète . En un mot, pour mettre en forme le code, préfixez simplement avec 4 espaces, ou sélectionnez le code et appuyez sur le bouton '010101' ou sur la touche' Ctrl + K'. – BalusC

Répondre

1

int foo[][][] déclare un tableau de tableaux de tableaux de int. Chaque nouvelle "dimension" signifie simplement "prends tout ce que j'ai, et fais moi un tableau de ceux-ci". Que vous les appeliez «lignes», «colonnes» ou tout ce qui vous appartient entièrement.

Dans votre exemple, vous voyez 12 lignes car un effet de vos boucles imbriquées est que vous appelez 12 fois System.out.println(). 12 caractères de nouvelle ligne signifient 12 lignes. Cela ne concerne pas la structure du tableau, mais seulement la manière dont vous imprimez les données.

5

Vous pouvez voir votre tableau tridimensionnel comme 3 tableaux bidimensionnels d'éléments 4x5, ou 12 tableaux unidimensionnels de 5 éléments.

C'est pourquoi vous avez 12 lignes dans votre sortie.

Pensez à ce tableau comme int[12][5] où le premier index dépend de deux index différents. Cette chose s'applique également au tableau à n dimensions. Il est juste une question d'indices ..

Si vous avez vraiment besoin d'aide pour imaginer que vous devez d'abord envisager un tableau à deux dimensions, dans votre exemple un tableau de 4x5 .. si vous avez quelque chose comme

00 01 02 03 04 
10 11 12 13 14 
20 21 22 23 24 
30 31 32 33 34 

lorsque vous ajoutez une troisième dimension est comme avoir plusieurs matrices qui restent l'un sur l'autre ..

donc si vous avez int[2][4][5] vous aurez

first index == 0 

00 01 02 03 04 
10 11 12 13 14 
20 21 22 23 24 
30 31 32 33 34 

et un autre

first index == 1 

00 01 02 03 04 
10 11 12 13 14 
20 21 22 23 24 
30 31 32 33 34 

Peut-être que cette image peut préciser:

alt text http://i.msdn.microsoft.com/02e7z943.ArrayExDimThree%28en-us,VS.90%29.gif

Chaque feuille extraite du « solide » représente un tableau 2D, enfait comme vous pouvez voir chaque feuille a la même première index (0 pour le premier, 1 pour le second, et ainsi de suite).Ainsi, en spécifiant le premier index, vous sélectionnez une matrice, puis vous pouvez sélectionner l'élément précis en utilisant les deux autres indices.

Bien sûr, vous pouvez l'étendre à n'importe quelle dimension, mais il serait plus difficile de vous montrer un hyper-solide qui représente le tableau.

+0

Merci beaucoup pour l'image. Je vais y jeter un coup d'oeil plus tard mais merci d'avance – kap

+2

+1 Super réponse. Pour la dimension suivante, visualisez-la simplement comme contenant n solides. Donc, si le solide ci-dessus était un bloc de bois, la dimension suivante permettrait plusieurs blocs de bois. La dimension après cela peut représenter des boîtes contenant ces blocs de bois. La prochaine dimension pourrait représenter quelque chose comme des «camions» qui contiennent plusieurs boîtes contenant des blocs de bois, etc. –

0

:-) Il existe trois groupes de sous-groupes de quatre, chacun avec 5 entiers. Chaque ligne de votre impression est un sous-groupe de 5 entiers. Quatre lignes successives forment un groupe. Si vous ajoutez un "-" à la seconde System.out.println votre impression sera plus facile à lire

Questions connexes