简化我的数组元素

时间:2014-06-09 03:14:22

标签: java arrays

我的节目在这里

int row=4,column=3;
int a[][]=new int[row][column];

a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
a[1][0]=4;
a[1][1]=5;
a[1][2]=6;
a[2][0]=7;
a[2][1]=8;
a[2][2]=9;
a[3][0]=10;
a[3][1]=11;
a[3][2]=12;

for(i=0; i<row; i++){
        System.out.println(" ");  

    for (j=0;j<column; j++){
        System.out.print(a[i][j]); 
        System.out.print(" ");  

而不是使用上面的程序。我想以这种方式放置我的阵列

int row=4,column=3;
int a[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

但是我很难像这样打印它

1 2 3        
4 5 6
7 8 9
10 11 12

2 个答案:

答案 0 :(得分:0)

您只需要一个嵌套循环来遍历行到底部和从左到右的列,如下所示:

for (int i = 0; i < rows; i++) { // traverse rows
    for (int j = 0; j < cols; j++) { // traverse columns
        System.out.print(a[i][j] + " "); // prints element in a(i,j) and a space before the next element

        if (j == cols - 1) System.out.println(""); // if it reached the end of the column, breaks to a new line
    }
}

答案 1 :(得分:0)

您的意图有点不清楚,但我猜测您排队输出(空格格式)时遇到问题。

如果您知道(预先)数组中的最大值,那么您可以使用填充格式化输出,否则您必须遍历数组两次。

  • 确定最大值后,您就知道有多少位数
  • 第二次是打印结果

所以你可以尝试这样的事情:

public static void main(String[] args) throws Exception {
    int array[][]={{1,2,3},{4,5,6},{7,8,9},{10,11,12},{100,101,102}};

    // Determine which number has the most digits to set padding width
    int padding = 1;
    for (int[] row : array) {
        for (int col : row) {
            int strLength = String.valueOf(col).length();
            if (strLength > padding) {
                padding = strLength;
            }
        }
    }

    for (int[] row : array) {
        for (int col : row) {
            // Adding 1 to padding to include spaces
            System.out.print(String.format("%" + (padding + 1) + "d", col));
        }
        // Ends the row 
        System.out.println();
    }
}

结果:

   1   2   3
   4   5   6
   7   8   9
  10  11  12
 100 101 102

你可以看到最大的值有3个数字,但我们用4填充,这样每个数字的打印都会占用4个字符,这样就可以将所有内容均匀分开并且是正确的。

更新

如果您被允许使用Java 8,这是一种确定数组中最大值的流方式。

public static void main(String[] args) throws Exception {
    int array[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {100, 101, 102}, {1001, 1002, 1003}};

    int padding = String.valueOf(Arrays.stream(array).flatMapToInt(a -> Arrays.stream(a)).max().getAsInt()).length();
    for (int[] row : array) {
        for (int col : row) {
            // Adding 1 to padding to include spaces
            System.out.print(String.format("%" + (padding + 1) + "d", col));
        }
        // Ends the row 
        System.out.println();
    }
}