Java 2d数组作为表,打印出索引

时间:2018-03-22 12:05:36

标签: java multidimensional-array

所以,基本上我需要打印出一个2d数组作为表,并将索引“放在”它周围。

Random rnd = new Random();

    int[][] array = new int[5][5];
    for (int row = 0; row < array.length; row++) {
        for (int col = 0; col < array[row].length; col++) {

            array[row][col] = rnd.nextInt(6);
        }
    }
    for (int row = 0; row < array.length; row++) {

        for (int col = 0; col < array[row].length; col++) {

            if (col < 1) {
                System.out.print(row+" ");
                System.out.print(" " + array[row][col] + " ");
            } else {

                System.out.print(" " + array[row][col] + " ");
            }

        }
        System.out.println();
    }

}

我明白了:

0  2  4  0  2  4

1  1  2  0  2  2 

2  0  1  5  4  0 

3  4  2  1  4  1 

4  2  4  3  1  3 

所以第一个(左)列是索引,我需要将另一列索引(0,1,2,3,4)放在“table”之上,并从第二列开始“计数”。像这样的东西:

  0 1 2 3 4
0 2 4 0 2 4
1 1 2 0 2 2
2 0 1 5 4 0
3 4 2 1 4 1
4 2 4 3 1 3

对不起任何错误,这是我第一次问这里。

3 个答案:

答案 0 :(得分:1)

在嵌套for循环之前进行for循环:

Random rnd = new Random();

final int COLUMNS = 5;
final int ROWS = 5;

int[][] array = new int[COLUMNS][ROWS];
for (int row = 0; row < array.length; row++) {
    for (int col = 0; col < array[row].length; col++) {

        array[row][col] = rnd.nextInt(6);
    }
}
System.out.print(" ");
for (int row = 0; row < array.length; row++) {
  System.out.print("  " + row );
}
System.out.println();
for (int row = 0; row < array.length; row++) {
    for (int col = 0; col < array[row].length; col++) {
        if (col < 1) {
            System.out.print(row);
            System.out.print("  " + array[row][col]);
        } else {

            System.out.print("  " + array[row][col]);
        }
    }
    System.out.println();
}

输出:

   0  1  2  3  4
0  2  3  1  0  2
1  0  1  1  5  2
2  1  0  3  3  5
3  1  4  0  5  2
4  1  0  3  3  3

答案 1 :(得分:0)

在打印表格的嵌套fors之前,你只缺少另一个,在那里先打印出一个空字符,然后需要索引。 否则,代码似乎是正确的。

System.out.print(" ");
for(int i=0;i<cols;i++){
    System.out.print(" "+i+" ");
}

答案 2 :(得分:0)

您最终打印的标签尺寸比阵列大1。首先,循环数组+ 1的长度。为此,请<条件更改<=条件。

然后,您可以简单地识别您正在经历的不同案例:

  1. 右上角由row==0col==0标识。在这种情况下,只需打印一个空格
  2. 第一行由row==0col!=0标识。在这种情况下,只需打印数组中的列号:col-1
  3. 第一列由col==0row!=0标识。在这种情况下,只需在数组中打印行号:row-1
  4. 所有其他值,只需从您的数组中打印出来:array[col-1][row-1]
  5. 你应该得到这个:

    for (int row = 0; row <= ROWS; row++) {
        for (int col = 0; col <= COLUMNS; col++) {
            if (col == 0 && row == 0) {  //Top right corner
                System.out.print(" ");
            } else if (row == 0) { //First row
                System.out.print(" " + (col-1));
            } else if (col == 0) { //First column
                System.out.print(" " + (row-1));
            } else { //All other cases
                System.out.print(" " + array[row-1][col-1]);
            }
        }
        System.out.println();
    }