【问题标题】:How to iterate over each element in a jagged array?如何遍历锯齿状数组中的每个元素?
【发布时间】:2017-04-19 02:15:24
【问题描述】:

我有一个二维数组,所以是一个数组数组。数组 DONT 的数组具有相同的长度。 举个例子:

double[][] multi = new double[][] { 
  { 10, 20, 30, 40, 50 }, 
  { 1.1, 2.2, 3.3, 4.4 }, 
  { 1.2, 3.2 },
  { 1, 2, 3, 4, 5, 6, 7, 8, 9 } 
};

如何循环浏览这些列? (如:10 1.1 1.2 1

【问题讨论】:

  • 欢迎来到 Stack Overflow!看起来你正在寻求家庭作业帮助。虽然我们对此本身没有任何问题,但请注意这些dos and don'ts,并相应地编辑您的问题。
  • 每一行都是一个数组。一个数组有一个length 属性。
  • 您的问题不清楚。例如,它在第 3 列上的表现如何(假设您要打印列)?它应该打印30, 3.3, null, 3吗?
  • 它应该跳过该值。 30, 3.3, 3

标签: java arrays for-loop


【解决方案1】:

二维数组是数组的数组...所以可以迭代为:

   for (double[] row: multi) {
       for(double value: row) {
       }
   }

【讨论】:

    【解决方案2】:

    这样做:

    for(int i=0; i<multi.length; i++) {
                for(int j=0; j<multi[i].length; j++) {
                    System.out.println("Values at multi["+i+"]["+j+"] is "+multi[i][j]);
                }
            }
    

    【讨论】:

      【解决方案3】:

      您可以这样做以迭代整个数组按列

      // Get the maximum number of columns among all rows.
      int maximumColumns = 0;
      for (double[] row : multi) {
          if (row.length > maximumColumns) {
              maximumColumns = row.length;
          }
      }
      
      for (int column = 0; column < maximumColumns ; column++) {
          for (int row = 0; row < multi.length; row++) {
              if (column >= multi[row].length) {
                  // There is no value for this column.
              } else {
                  // Do stuff here with multi[row][column].
              }
          }
      }
      

      对于存在于所有行中的特定列,请执行以下操作:

      int columnToIterate = // Your column.
      for (int row = 0; row < multi.length; row++) {
          if (columnToIterate < multi[row].length) {
              // Do stuff here with multi[row][columnToIterate].
          }
      }
      

      【讨论】:

      • 第一个例子做你想做的事。请注意,如果您想忽略不存在的值,您可以仅将if (column &lt; multi[row].length) 用于multi[row][column],并离开else 分支。
      • 请注意,如果multi[row] 为空,multi[row].length 将抛出异常(并且由于数组可以为空,这是有可能的)。
      【解决方案4】:

      在交错数组中,第一个索引是行索引,第二个索引是列索引(例如multi[rowIndex][columnIndex])

        for (int row = 0; row < multi.length; row++) {
              for (int column = 0; column < multi[row].length; column++) {
                  System.out.print(multi[row][column]);
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-01
        • 1970-01-01
        • 2019-10-29
        • 1970-01-01
        • 2019-06-26
        • 2011-01-20
        相关资源
        最近更新 更多