欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

在控制台输出表格形式的内容,控制台输出表格,import java.

来源: javaer 分享于  点击 20028 次 点评:46

在控制台输出表格形式的内容,控制台输出表格,import java.


import java.util.ArrayList;import java.util.List;/** * <p> 描述: 生成控制台表格</p> * <p/> * <p> Create Date: 2009-9-18  12:52:01 <p> * * @author betafox * @version 1.0 */public class ConsoleTable {    private List<List> rows = new ArrayList<List>();    private int colum;    private int[] columLen;    private static int margin = 2;    private boolean printHeader = false;    public ConsoleTable(int colum, boolean printHeader) {        this.printHeader = printHeader;        this.colum = colum;        this.columLen = new int[colum];    }    public void appendRow() {        List row = new ArrayList(colum);        rows.add(row);    }    public ConsoleTable appendColum(Object value) {        if (value == null) {            value = "NULL";        }        List row = rows.get(rows.size() - 1);        row.add(value);        int len = value.toString().getBytes().length;        if (columLen[row.size() - 1] < len)            columLen[row.size() - 1] = len;        return this;    }    public String toString() {        StringBuilder buf = new StringBuilder();        int sumlen = 0;        for (int len : columLen) {            sumlen += len;        }        if (printHeader)            buf.append("|").append(printChar('=', sumlen + margin * 2 * colum + (colum - 1))).append("|\\n");        else            buf.append("|").append(printChar('-', sumlen + margin * 2 * colum + (colum - 1))).append("|\\n");        for (int ii = 0; ii < rows.size(); ii++) {            List row = rows.get(ii);            for (int i = 0; i < colum; i++) {                String o = "";                if (i < row.size())                    o = row.get(i).toString();                buf.append('|').append(printChar(' ', margin)).append(o);                buf.append(printChar(' ', columLen[i] - o.getBytes().length + margin));            }            buf.append("|\\n");            if (printHeader && ii == 0)                buf.append("|").append(printChar('=', sumlen + margin * 2 * colum + (colum - 1))).append("|\\n");            else                buf.append("|").append(printChar('-', sumlen + margin * 2 * colum + (colum - 1))).append("|\\n");        }        return buf.toString();    }    private String printChar(char c, int len) {        StringBuilder buf = new StringBuilder();        for (int i = 0; i < len; i++) {            buf.append(c);        }        return buf.toString();    }    public static void main(String[] args) {        ConsoleTable t = new ConsoleTable(4, true);        t.appendRow();        t.appendColum("序号").appendColum("姓名").appendColum("性别").appendColum("年龄");        t.appendRow();        t.appendColum("1").appendColum("张123213dadad").appendColum("男").appendColum("11");        t.appendRow();        t.appendColum("22").appendColum("23123强3333");        System.out.println(t.toString());    }}//该片段来自于http://byrx.net
相关栏目:

用户点评