【问题标题】:Understanding Multidimensional Array in java了解java中的多维数组
【发布时间】:2015-10-17 21:32:04
【问题描述】:

我正在尝试理解 java 中多维数组的概念。下面是贴出的代码。

    int [] [] [] x = new int [3] [] [];
    int i, j;
    x[0] = new int[4][];
    x[1] = new int[2][];
    x[2] = new int[5][]; 
    for (i = 0; i < x.length; i++)
     {
        for (j = 0; j < x[i].length; j++) 
         {
            x[i][j] = new int [i + j + 1];
            System.out.println("size = " + x[i][j].length);
         }
     }
     }

我不明白“x[0] = new int[4][]; ”中存储了什么,以及这样写的想法是什么?任何建议都会非常有帮助。

【问题讨论】:

    标签: java arrays multidimensional-array


    【解决方案1】:

    多维数组基本上是数组的数组:)像这样:

    int[][] X = new int[4][3];
    

    意思是:

          X[0]   X[1]   X[2]   X[3]
    X -> [    ] [    ] [    ] [    ]
         [    ] [    ] [    ] [    ]
         [    ] [    ] [    ] [    ]
    

    int[][] X = new int[4][];
    X[0] = new int[2]; 
    X[1] = new int[1]; 
    X[2] = new int[3]; 
    X[3] = new int[2]; 
    

    会产生一个像这样的不规则数组:

          X[0]   X[1]   X[2]   X[3]
    X -> [    ] [    ] [    ] [    ]
         [    ]        [    ] [    ]
                       [    ]       
    

    所以每个 X 的“孩子”都是另一个数组。就这么简单,尽量不要过度思考这个概念,它并不像看起来那么复杂:)

    【讨论】:

    • "int [] [] [] x = new int [3] [] []" 这是数组初始化对吗?x[0] = new int[4][3];是什么意思?
    • 哦,你是对的,我错过了一对括号,我的错,已更正:-)
    • 在我的示例中,子数组的大小是预定义的(每个包含 3 个元素)。如果您使用空括号 (new int[4][]) 执行此操作,您可以为每个孩子定义不同的大小。
    • 你能拿出一个小图来总结你的解释吗
    • 你现在明白了吗? :)
    【解决方案2】:

    Java 知道数组。 java中的技巧是,如果你想要一个多维数组,你只需在数组中创建一个数组。 用 x[0] = new int[4][];您是在告诉多维数组中有 4 行,但您没有填充它们。 如果您说 new int[4][2],则每行将有 2 个项目,默认值为 int。 如果你有像 c# 这样的语言,你会说 int[,],但这在 java 中是不可能的。

    因此,也可以将 2 个项目放在第一行,然后将 3 个放在下一行。 所以长度不均匀是可能的。

    【讨论】:

      猜你喜欢
      • 2017-05-30
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2022-01-19
      • 2011-01-20
      • 2012-07-22
      • 2016-06-22
      • 1970-01-01
      相关资源
      最近更新 更多