printout 2维数组,按列具有不同的行长度

时间:2018-02-24 17:33:08

标签: java arrays multidimensional-array

如果列为什么,如何打印第一列,然后打印第二列? 因此基本上arr[0][0]arr[0 to 7][0]然后存在 arr[0,2,3,5][1]然后arr[2,5][2]然后arr[2][3]
但是以动态方式,因为每次执行的长度都不同

String[][] arr = new String [7][];

arr[0]=new String[2];   
arr[1]=new String[1];   
arr[2]=new String[4];   
arr[3]=new String[2];   
arr[4]=new String[1];   
arr[5]=new String[3];   
arr[6]=new String[1];   
arr[7]=new String[1];

2 个答案:

答案 0 :(得分:0)

我不确定这是不是你想要的。该代码包含两个方法,逐行和逐列显示锯齿状数组。

public class JavaApplication1 {

    private String[][] generateArray(int rows, int maxColumns) {
        String[][] array = new String[rows][];

        for(int i = 0; i < rows; i++) {
            int columns = (int) (Math.random() * maxColumns) + 1;

            String[] innerArray = new String[columns];
            for(int j = 0; j < columns; j++) {
                innerArray[j] = String.format("Row: %d Column: %d", i, j);
            }

            array[i] = innerArray;
        }

        return array;
    }

    private void printByRows(String[][] jaggedArray) {        
        for(int i = 0; i < jaggedArray.length; i++) {
            String rowText = "";

            for(int j = 0; j < jaggedArray[i].length; j++) {
                rowText += String.format("%s\t", jaggedArray[i][j]);
            }

            System.out.println(rowText);
        }
    }

    private void printByColumns(String[][] jaggedArray) {
        int maxColumns = 0;
        for(int i = 0; i < jaggedArray.length; i++) {
             maxColumns = Math.max(jaggedArray[i].length, maxColumns);
        }

        for(int i = 0; i < maxColumns; i++) {
            String text = "";

            for(int j = 0; j < jaggedArray.length; j++) {
                if (i < jaggedArray[j].length) {
                    text += String.format("%s\t", jaggedArray[j][i]);
                }
            }

            System.out.println(text);
        }
    }

    public void run() {
        String[][] array = generateArray(8, 5);
        System.out.println("Array row by row");
        printByRows(array);

        System.out.println("Array column by column");
        printByColumns(array);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {       
        new JavaApplication1().run();
    }
}

答案 1 :(得分:0)

 private void printByColumns(String[][] jaggedArray) {
    int maxColumns = 0;
    for(int i = 0; i < jaggedArray.length; i++) {
         maxColumns = Math.max(jaggedArray[i].length, maxColumns);
    }

    for(int i = 0; i < maxColumns; i++) {
        String text = "";

        for(int j = 0; j < jaggedArray.length; j++) {
            if (i < jaggedArray[j].length) {
                text += String.format("%s\t", jaggedArray[j][i]);
            }
        }

        System.out.println(text);
    }
}