Java 有助于理解多维数组

Java 有助于理解多维数组,java,Java,我一直在谷歌上搜索很多教程,以了解三维阵列,但似乎所有的教程都是二维阵列。所以我需要一点解释来理解三维阵列 我真的很了解二维数组,但我发现很难理解三维数组和四维数组。我知道二维数组代表行和列,但是这个三维数组呢: 我对下面代码的理解是应该有3行4列,但最后一个位置的5行使它看起来不同。我需要帮助理解为什么有12行5列。如果你能帮助我理解4-D或5-D阵列 谢谢 class ThreeDMatrix { public static void main(String[] args) {

我一直在谷歌上搜索很多教程,以了解三维阵列,但似乎所有的教程都是二维阵列。所以我需要一点解释来理解三维阵列

我真的很了解二维数组,但我发现很难理解三维数组和四维数组。我知道二维数组代表行和列,但是这个三维数组呢:

我对下面代码的理解是应该有3行4列,但最后一个位置的5行使它看起来不同。我需要帮助理解为什么有12行5列。如果你能帮助我理解4-D或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();

}

}
}

请为代码的糟糕呈现道歉。我真的不知道如何正确使用代码标签。如果有人给我看,我会转载。谢谢

intfoo[][[]
声明了一个数组,数组是
int
的数组。每一个新的“维度”仅仅意味着“拿我所有的,给我一个数组”。不管你称它们为“行”、“列”还是其他什么,这完全取决于你自己


在您的示例中,您看到12行,因为嵌套循环的一个影响是您调用了12次
System.out.println()
。12个换行符表示12行。这与数组的结构无关,只与您打印数据的方式有关。

intfoo[][][]
声明了一个数组数组,数组数组数组由
int
组成。每一个新的“维度”仅仅意味着“拿我所有的,给我一个数组”。不管你称它们为“行”、“列”还是其他什么,这完全取决于你自己


在您的示例中,您看到12行,因为嵌套循环的一个影响是您调用了12次
System.out.println()
。12个换行符表示12行。这与数组的结构无关,只与打印数据的方式有关。

您可以将三维数组视为包含4x5个元素的三维数组,或包含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
当您添加第三维时,就像有多个矩阵,它们彼此保持一个

所以如果你有
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
还有一个

first index == 1

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
也许这幅图可以澄清:


(来源:)

从“实体”中提取的每张图纸都代表一个二维数组,事实上,正如您所看到的,每张图纸都具有相同的第一个索引(
0
,第一个索引为
1
,第二个索引为
1
,依此类推)。因此,通过指定第一个索引,您可以选择一个矩阵,然后您可以使用其他两个索引来选择精确的元素


当然,您可以将其扩展到任何维度,但更难显示表示数组的超实体。

您可以将三维数组视为包含4x5个元素的三维数组,或包含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
当您添加第三维时,就像有多个矩阵,它们彼此保持一个

所以如果你有
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
还有一个

first index == 1

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
也许这幅图可以澄清:


(来源:)

从“实体”中提取的每张图纸都代表一个二维数组,事实上,正如您所看到的,每张图纸都具有相同的第一个索引(
0
,第一个索引为
1
,第二个索引为
1
,依此类推)。因此,通过指定第一个索引,您可以选择一个矩阵,然后您可以使用其他两个索引来选择精确的元素

当然,您可以将其扩展到任何维度,但更难显示表示阵列的超实体。

:-) 有三组四个子组,每组有5个整数。打印输出中的每一行都是5个整数的子组。四条连续的线组成一组。如果在第二个System.out.println中添加“-”,则打印输出将更易于阅读
有三组四个子组,每组有5个整数。打印输出中的每一行都是5个整数的子组。四条连续的线组成一组。如果在第二个System.out.println中添加“-”,则在消息编辑器右侧的列中,打印输出将更易于阅读

,您可以看到格式规则和指向完整格式参考的链接。简而言之,要格式化代码,只需在前缀中加上4个空格,或者选择“代码”,然后按
010101
按钮或
Ctrl+K
键。在消息编辑器右侧的列中,您可以看到格式化规则和指向完整格式化参考的链接。简而言之,要格式化代码,只需在前缀中加上4个空格,或者选择“代码”,然后按
010101
按钮或
Ctrl+K
键。非常感谢您的图片。稍后我会看一看,但谢谢你的进步+1个很棒的答案。对于下一个维度,只需将其可视化为包含n个实体。因此,如果上面的实体是一块木头,那么下一个维度将允许多块木头。之后的尺寸可能表示包含这些木块的盒子。下一个维度可以表示像“卡车”这样的东西,它可以容纳多个盒子,其中包含木块等。非常感谢这张图片