在一个循环中打印锯齿状数组列表

时间:2013-08-29 17:43:19

标签: java jagged-arrays

int[ ][ ] num=new int[5][ ];
 num[0]=new int[1];
 num[1]=new int[5];
 num[2]=new int[];
 num[3]=new int[3];

可以在一个循环中打印锯齿状阵列还是需要两个循环?

4 个答案:

答案 0 :(得分:2)

需要两个循环;一个遍历数组数组,一个循环遍历每个嵌套数组并打印相应的元素。您也可以简单地使用Arrays.deepToString()(在内部使用循环):

int[][] num = new int[5][];
num[0] = new int[1];
num[1] = new int[5];
num[2] = new int[0];
num[3] = new int[3];

System.out.println(Arrays.deepToString(num));
[[0], [0, 0, 0, 0, 0], [], [0, 0, 0], null]

答案 1 :(得分:1)

void printRaggedArray(int[][] ragged) {
    int outer = 0;
    int inner = 0;
    while(outer < ragged.length) {
        if(inner >= ragged[outer].length) {
            inner=0;
            outer++;
            continue;
        }
        System.out.println[outer][inner++];
    }
}

这样可行,但2个循环更好。这并不快,事实上它可能更慢。

答案 2 :(得分:0)

您可以使用Arrays.toString()来避免编写内部循环。

for(int[] row: num) {
  System.out.println(Arrays.toString(row));
}

但是你的代码实际上并不快。它仍然在引擎盖下使用for循环。

答案 3 :(得分:0)

public class Main {
  public static void main(String args[]) {
    int twoD[][] = new int[4][];
    twoD[0] = new int[1];
    twoD[1] = new int[2];
    twoD[2] = new int[3];
    twoD[3] = new int[4];

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