【问题标题】:Test length of multiple dimensions of an array in Java在Java中测试数组的多个维度的长度
【发布时间】:2011-09-14 01:36:40
【问题描述】:

我是 Java 菜鸟。我现在对这门语言不太了解(至少,还不足以做复杂的事情),但我快到了!

我知道你可以通过arr.length 测试一维数组的长度,但是是否可以测试其他维度(在多维数组中)?

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    是的,是的。显然,要测试第一个维度,您只需执行arr.length。后续维度通过使用 length 和该特定维度的 [0] 元素进行测试。例如,考虑这个数组:

    int[][][][] arr = new int[10][11][12][13];
    

    测试...

    • 第一维:arr.length;

    • 第二维:arr[0].length;

    • 第三维:arr.[0][0].length;

    • 第四维:arr.[0][0][0].length;

    【讨论】:

    • 这可能不会经常出现,但是这个例子对于一个参差不齐的数组会失败。
    • @Jeffery True,但正如您所说,它可能不会经常出现。 :)
    【解决方案2】:

    多维数组只是数组的数组,数组中的每个数组可以有不同的长度。即:

    int arr[][] = new int[2][];
    arr[0] = new int[5];
    arr[1] = new int[10];
    System.out.println(arr.length);
    System.out.println(arr[0].length);
    System.out.println(arr[1].length);
    

    现在你有了一个二维数组。第一个维度(外部)可以称为arr,大小为 2。内部数组可以称为 arr[0] 和 arr[1],长度分别为 5 和 10。由于这些中的每一个都引用了一个普通的 Java 数组,因此您可以使用所有普通的方式来访问它们上的一个数组。此外,由于我们通过将数组放入数组来创建多维数组,因此您可以拥有任意多的维度,并且您可以通过索引到上面的一层来访问每一层:arr[2][1][5][11][3][0][123][5][42][9][7]....length

    【讨论】:

    • 从技术上讲,维度不能超过 255 个。
    • stackoverflow.com/questions/4060538 备份@fireshadow,顺便说一句,因为我以前从未真正遇到过。
    • @fireshadow:确实如此,但如果你做到了这一点,那么你做错了。
    【解决方案3】:

    假设,一个二维数组,您可以使用arr[i].length 访问ith 内部数组的长度。

    如果您还没有看过,请查看Arrays (The Java™ Tutorials)。

    【讨论】:

      【解决方案4】:

      您可以通过直接引用您要测试的维度来测试其他维度的其他维度。

      例如,如果您有一个二维数组,主维度中有 3 个项目,那么您可以使用 arr[0].length、arr[1].length 和 arr[2 ]。长度。

      下面的代码只是设置了一个数组,然后验证长度是否符合我们的预期。

      public void testLength(){
          //setup the array you are wanting to test
          int[][] foo = new int[2][5];
          // this just makes sure that we do get 2 dimensions within the primary
          Assert.assertEquals(2,foo.length);
          Assert.assertEquals(5,foo[0].length);
      
          // change the array stored within foo[0]
          foo[0]= new int[8];
          Assert.assertEquals(8,foo[0].length);       
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-22
        • 2014-11-29
        • 1970-01-01
        • 2023-02-25
        • 2021-04-24
        • 2012-09-12
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多