【问题标题】:Two dimensional array 4x5 matrix二维数组 4x5 矩阵
【发布时间】:2017-02-24 22:10:08
【问题描述】:

我最近涉足 Java 并遇到了二维数组。有一段时间,我试图理解这段代码:

   int twoD[][]= new int[4][5];
int i, j, k = 0;

for(i=0; i<4; i++)
for(j=0; j<5; j++) {
    twoD[i][j] = k;
 k++; }

for(i=0; i<4; i++) {
  for(j=0; j<5; j++)
    System.out.print(twoD[i][j] + " ");
  System.out.println();

输出是

0 1 2 3 4

5 6 7 8 9

10 11 12 13 14

15 16 17 18 19

我只是无法弄清楚这段代码的年表是如何工作的。我知道每行应该输出 5 列,但是它是如何分步实现的呢?

非常感谢!

罗兰 阿姆斯特丹

【问题讨论】:

  • “年表”是什么意思?
  • 我认为他的意思是程序的流程/执行
  • 主要是我不明白for循环的执行顺序。什么路线导致输出 1、2 等的顺序。对不起,我只做了一个星期……到目前为止一切顺利
  • k++;。以0 开头,在循环的每次迭代中添加1

标签: java multidimensional-array


【解决方案1】:

第一个循环遍历每一行,第二个嵌套循环针对这一行中的每个元素,每次将 k 的值设置为此数组并递增 1

【讨论】:

  • 谢谢!这也使情况更加清晰。但是我仍然没有得到这段代码中一步一步发生的事情的运行顺序。以及如何将 k 用于输出?再次感谢!
【解决方案2】:

想想int[4][1] 的输出会是

0
1
2
3

那就想想int[4][2]

0 1
2 3
4 5
6 7

现在看到模式了吗?

【讨论】:

    【解决方案3】:

    您的年表是指数组工作的顺序,我假设:

     int twoD[][]= new int[4][5];
    

    这是以下内容的缩写:

    int[][] twoD= new int[4][];
    twoD[0] = new int[5];
    twoD[1] = new int[5];
    twoD[2] = new int[5];
    twoD[3] = new int[5];The arrays in most of the computer lanaguages will start with the index 0.
    

    并且二维数组必须包含数组 - int[4][5] 有两个参数 4 和 5。这意味着它有 4 行和 5 列。 例如,您创建的二维数组如下所示:

    int[][] two = new int[][]{
    {0, 1, 2, 3, 4},
    {5, 6, 7, 8, 9},
    {10, 11 12, 13, 14},
    {15, 16, 17, 18, 19}
    };
    

    第一个循环

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

    负责循环遍历行和第二个 for 循环

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

    遍历列。

    由于您正在打印 for 循环的迭代值,例如 0、1、2、3 等...输出就像您得到的一样。

    我个人建议你动手实践一维数组,比如 int[] 数组 = {0,1,2,3,4}

    使用类似的for循环

    for(j=0; j<5; j++) 
     System.out.println(array[j]);
    

    这将打印出来

    0 1 2 3 4

    这将使您的学习变得有趣。 干杯!

    【讨论】:

    • 谢谢!但仍然不完全清楚......关于 for 循环的层次结构,会发生什么并按顺序输出?抱歉,我对 Java 还很陌生,目前我正在寻找非常简单的答案。
    • 可能是这个视频你能更好地解释二维数组 - 2d Array explaained
    【解决方案4】:

    'i' 从 [0 - 4) 变化,对于 i 的每个值,(通过内部 for 循环)j 从 [0-5) 变化。所以 (i,j) 对从 (0,0),(0,1)..(0,4),(1,0),(1,1)......(3,4 )。

    'twoD[i][j] = k' 将 twoD 数组的第 i 行的第 j 列赋值为 k。 k 从 '0' 开始,每次递增 1(通过k++)。所以 k 的值(因此是 twoD[i][j])从 0 到 19,其中 twoD[0][0] = 0twoD[3][4] = 19

    如果想看 k 是如何增加这个语句的 - System.out.print(k);之前两个D[i][j] = k;并添加'System.out.println();'在'k++; }'

    【讨论】: