格式化字符串以均匀显示它

时间:2015-12-24 00:00:42

标签: java

我正在从两个单独的ArrayList<String>(两者都具有相同的长度)中检索信息以进行显示。无论如何,我可以将它制成表格以便整齐地显示出来吗?因为String的长度会发生变化,所以我无法预先确定长度。

这就是它目前的样子。

Title Quantity

name1 10
name2 20
namenamename 30
na 40 

我试图通过相应地调整长度来获得以下内容。

Title         Quantity

name1         10
name2         20
namenamename  30
na            40

代码

String order = "Title:\tQuantity\n";
for(int x=0; x < list1.size(); x++){
    order += list1.get(x) + "\t\t" + list2.get(x) + "\n";
}

新代码

String order = String.format("%-30s %s", "Title", "Quantity\n");
for(int x=0; x < list1.size(); x++){
    order+= String.format("%-30s %s", list1.get(x), list2.get(x)) + "\n";
}

现在的样子

Title                    Quantity

Crackers                 4
Cup                     6
Desk                   1
Fanta Soft Drink            12
Oasis Citrus Punch            1
Oreo Double Stuff             22
Spinach                 1

1 个答案:

答案 0 :(得分:1)

找到第一列的最长条目,然后使用带有字段宽度参数的格式字符串的String.format(),如下所示:%-23s %4s应创建两列,其中c1为23宽,左对齐。 c2是4个右对齐的字符。

请在此处查看重复的问题https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax