帮助理解多维数组

kap*_*kap 1 java

我一直在谷歌搜索以获得教程来理解三维数组,但似乎所有的教程都是二维数组.所以我需要一些解释来理解三维阵列的运行情况.

我非常了解二维数组,但我发现很难理解3和4等维数组.我知道2-D数组代表行和列但是这个3-D数组呢:

我对下面代码的理解是应该有3行和4列,但是最后一个位置的5使它看起来不同.我需要帮助来理解为什么有12行和5列.如果你能帮助我理解4或5-D阵列

谢谢.

 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();

}

}
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

-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
Run Code Online (Sandbox Code Playgroud)

抱歉代码的渲染效果不佳.我真的不知道如何正确使用代码标签.如果有人会告诉我,那么我将重新发布.谢谢

Jac*_*ack 5

您可以将三维数组视为4个5x元素的3维二维数组,或者是5个元素的12个一维数组.

这就是你输出中有12行的原因.

将此数组视为int[12][5]第一个索引依赖于两个不同索引的位置.这个东西也适用于n维数组.这只是指数问题..

如果你真的需要帮助想象它你应该首先考虑一个二维数组,在你的例子中是一个4x5数组..所以你有类似的东西

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
Run Code Online (Sandbox Code Playgroud)

当你添加第三个维度就像有多个矩阵相互保持一样.

所以如果你有int[2][4][5]你的话

first index == 0

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
Run Code Online (Sandbox Code Playgroud)

还有一个

first index == 1

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
Run Code Online (Sandbox Code Playgroud)

也许这张照片可以澄清:

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

从"solid"中提取的每个工作表都代表一个2D数组,因为您可以看到每个工作表都具有相同的第一个索引(0对于第一个索引,1对于第二个索引,依此类推).因此,通过指定第一个索引选择矩阵,可以使用其他两个索引选择精确元素.

当然,您可以将其扩展到任何维度,但是向您展示代表阵列的超固体将更加困难.

  • +1很棒的答案.对于下一个维度,只需将其可视化为包含n个实体.因此,如果上面的固体是一块木头,下一个尺寸将允许多块木头.之后的尺寸可能代表包含那些木块的盒子.下一个维度可以代表类似"卡车"的东西,其中包含多个包含木块等的盒子等. (2认同)