Print Java arrays in columns

后端 未结 3 1898
梦如初夏
梦如初夏 2021-01-16 19:03

I\'m trying to format two arrays in Java to print something like this:

Inventory Number      Books                          Prices
--------------------------         


        
3条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-16 19:46

    Without using any libraries, you need to determine the maximum length of each coloumn and append the needed space characters appropriately. For example like this:

    /**
     * Determines maximum length of all given strings.
     */
    public static int maxLength(int padding, String... array) {
        if (array == null) return padding;
        int len = 0;
        for (String s : array) {
            if (s == null) {
                continue;
            }
            len = Math.max(len, s.length());
        }
        return len + padding;
    }
    
    /**
     * Unifies array element lengths and appends 3 whitespaces for padding.
     */
    public static String[] format(String[] array) {
        if (array == null || array.length == 0) return array;
        int len = maxLength(3, array);
        String[] newArray = new String[array.length];
        for (int i = 0; i < array.length; i++) {
            newArray[i] = array[i];
            while (newArray[i].length() < len) {
                newArray[i] += " ";
            }
        }
        return newArray;
    }
    

提交回复
热议问题