我一直在谷歌搜索以获得教程来理解三维数组,但似乎所有的教程都是二维数组.所以我需要一些解释来理解三维阵列的运行情况.
我非常了解二维数组,但我发现很难理解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)
抱歉代码的渲染效果不佳.我真的不知道如何正确使用代码标签.如果有人会告诉我,那么我将重新发布.谢谢
您可以将三维数组视为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对于第二个索引,依此类推).因此,通过指定第一个索引选择矩阵,可以使用其他两个索引选择精确元素.
当然,您可以将其扩展到任何维度,但是向您展示代表阵列的超固体将更加困难.
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |