【问题标题】:Multidimensional Arrays lengths in JavaJava中的多维数组长度
【发布时间】:2011-08-22 22:12:36
【问题描述】:

如何找到索引不相等的多维数组的长度?

比如我有int[][] pathList = new int[6][4]

没有实际对索引进行硬编码,我需要找到“6”和“4”。

pathList.length 可以找到 6,但是如何获取 '4'?

【问题讨论】:

  • 理解这个答案的关键在于理解多维数组是一个array-of-arrays,也就是一个数组,其中每个元素依次在一个数组中。

标签: java arrays multidimensional-array


【解决方案1】:

pathList.length 为您提供行数。这意味着它将为int[6][4] 输出 6 pathList[i].length 为您提供第 i 行的列数。由于int[6][4] 可以看作是一个矩形,所以它总是输出 4。

【讨论】:

    【解决方案2】:

    您可以使用 pathlist[i].length 找到“4”

    如果我是新手,请纠正我,并帮助我更好地理解 Java。下面的代码可以帮助你理解。

    public class Main {
    
        public static void main(String[] args) {
    
    
            int num[][] = new int[1][3];
            for (int i = 0; i < num.length; i++) {
                for (int j = 0; j < num[i].length; j++) {
                    num[i][j] = 10;
                    System.out.println("num [" + i + "] [" + j + "] = " + num[i][j]);
                }
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      在 Java 中,我们不能像使用一维数组那样使用 Length 字段。 所以简单的写几行代码就解决了这个问题。 首先,您需要知道多维数组中 Length 字段的输出是行数。我的意思是当您有以下数组时

      int[][] 数字 = {{1,2,3,4,2,6},{4,5,6,7}};

      结果 System.out.println(numbers.length); 是 2,因为你有 2 行。所以,你应该用它来解决这个问题。 示例:

      public class Main {
      
      public static void main(String[] args) {
      
          //Array definition
          int[][] numbers = {{1,2,3,4,2,6},{4,5,6,7}};
      
          //Number of array's elements
          int result = 0;
      
          //calculate via loop
          for(int i=0; i< numbers.length; i++){
              result +=  numbers[i].length;
          }
      
          //output
          System.out.println(result);
      }
      

      }

      【讨论】:

        【解决方案4】:

        3-D 数组长度

        int[][][] a = new int[2][3][7];
        int length=0;
        for(int[][] i:a){
            for(int j[]:i){
                length+=j.length;
            }   
        }           
        System.out.println(length);
        

        【讨论】:

          【解决方案5】:

          在java中,我们可以定义数组数组,我们称之为多维数组。数组数组是指我们数组的单个元素又是一个数组(在java中可以是多个长度)。要找到多的长度具有所有相同大小的子数组的数组,我们可以使用:

          int[][]a=new int[3][3];//let a[][] be my array
          a.length will work.   //a is an object of proxy class and length is its property.
          

          但是,如果您有不同大小的子数组,则必须对其进行迭代。

          for(i=0;i<a.length;i++)
                  int cur_size=a[i].length;
          

          【讨论】:

            【解决方案6】:

            对于二维数组:-

            int x[][] = new int[6][12];
            System.out.println(x.length + " " + x[1].length);
            

            输出:6 12

            【讨论】:

              【解决方案7】:

              这是一个 3 维数组。

               int x[][][]=new int[5][8][10];
                      System.out.println(x.length+" "+x[1].length+" "+x[0][1].length);
              

              输出: 5 8 10

              【讨论】:

              • 我不确定更高的维度,所以我测试了它:对于第 4 维数组:System.out.println(x.length+" "+x[1].length+" "+x[0][1].length+" "+x[0][0][1].length);,因此,要获得i'th 行中的长度(元素数) n 维数组(带有n&gt;2),一种类型:&lt;arrayname&gt; 后跟以下字符的n-2[0] 后跟`[1].length。
              【解决方案8】:

              这将为您提供索引 i 处的数组长度

              pathList[i].length
              

              需要注意的是,与 C 或 C++ 不同,Java 中二维数组的元素长度不必相等。例如,当pathList 被实例化为等于new int[6][] 时,它可以容纳6 个int [] 实例,每个实例的长度可以不同。


              因此,当您按照问题中显示的方式创建数组时,您不妨这样做

               pathList[0].length
              

              因为你知道它们都有相同的长度。在其他情况下,您需要针对您的应用程序准确什么定义第二维的长度意味着 - 它可能是所有元素长度的最大值,或者可能是最小值。在大多数情况下,您需要遍历所有元素并读取它们的长度以做出决定:

              for(int i = 0; i < pathList.length; i++)
              {
                  int currLen = pathList[i].length;
              }
              

              【讨论】:

                【解决方案9】:

                Java 有“锯齿状”多维数组,这意味着二维数组中的每一“行”可以有不同数量的组件。如果您可以假设每行具有相同数量的组件,请使用:

                pathList[0].length;
                

                否则,您将不得不迭代:

                int maxRowLength = 0;
                for (int i = 0; i < pathList.length; i++) {
                    if (maxRowLength < pathList[i].length) {
                        maxRowLength = pathList[i].length;
                    }
                }
                

                【讨论】:

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