我如何对齐多维数组?

时间:2016-10-27 11:53:11

标签: java arrays design-patterns multidimensional-array string-formatting

import java.io.PrintStream;

public class JavaApplication16 {

    public static void main(String[] args) {
        // Create 2-dimensional array.
        String[][] values = new String[12][4];
        String format;
        format = "|%1$-30s|%2$-10s|%3$-20s|\n";

        // Assign three elements in it.
        values[0][0] = "Mnd";
        values[0][1] = "Stroom";
        values[0][2] = "Water";
        values[0][3] = "Telefoon";
        values[1][0] = "Jan";
        values[1][1] = "1000";
        values[1][2] = "1500";
        values[2][0] = "Feb";
        values[3][0] = "Mrt";

        values[3][2] = "3";

        // Loop over top-level arrays.
        for (String[] sub : values) {
            // Loop and display sub-arrays.
            for (String sub1 : sub) {
                PrintStream printf;
                printf = System.out.printf(sub1 + " ");
            }
            System.out.println();
        }
    }
}

输出是:

Mnd Stroom Water Telefoon
Jan 1000 1500 null
Feb null null null
Mrt null 3 null
null null null null
null null null null
null null null null
null null null null
null null null null
null null null null
null null null null
null null null null

1 个答案:

答案 0 :(得分:1)

我不太了解您的format变量,因为它未被使用。如果您希望使用固定的列大小,可以使用这种格式执行此操作,请参阅以下答案:How can I pad a String in Java?

如果你想要灵活的列大小,根据表中的元素,这里是伪代码:

  1. 创建一个整数的单维数组,其长度等于列数。使用该列中最长字符串的长度填充它。在您的情况下,它应该是int[] columnSize = {4, 6, 5, 8};
  2. 从列item打印项x时,请添加等于columnSize[x] - item.toString().length() + 1的尾随空格。
  3. 您可以跳过打印x == columnSize.length
  4. 的尾随空格