我想组织这样的信息:
信息是用单元组织的,而System.out.println
信息是非常混乱的。
您可以使用System.out.format()
或System.out.printf()
(printf
内部简单地调用,format
因此这两种方法都可以得到相同的结果)。
在下面,您将找到一个示例,该示例将文本左对齐并在未使用的地方填充空格。可以将字符串向左对齐%-15s
,这意味着:
%
储备金(占位符)15
字符的“地方” s
字符串数据类型 -
然后从左侧开始打印它们。 如果要处理数字,请使用d
后缀,例如%-4d
最多4个数字的后缀,应将其放在列的左侧。
BTW printf
不会在打印数据后自动添加行分隔符,因此,如果wan要将光标移动到下一行,我们需要自己做。我们可以使用\r
或\n
,或者让Formatter生成依赖于操作系统的行分隔符(例如Windows \r\n
),我们可以使用%n
占位符(请注意:它不需要任何数据作为参数,Java会根据OS提供正确的序列)。
您可以Formatter
在该类的文档中找到有关受支持的语法的更多信息。
String leftAlignFormat = "| %-15s | %-4d |%n";
System.out.format("+-----------------+------+%n");
System.out.format("| Column name | ID |%n");
System.out.format("+-----------------+------+%n");
for (int i = 0; i < 5; i++) {
System.out.format(leftAlignFormat, "some data" + i, i * i);
}
System.out.format("+-----------------+------+%n");
输出
+-----------------+------+
| Column name | ID |
+-----------------+------+
| some data0 | 0 |
| some data1 | 1 |
| some data2 | 4 |
| some data3 | 9 |
| some data4 | 16 |
+-----------------+------+
完美的答案!!非常感谢!我可以做到我想要的=)
对于固定要求,此解决方案是完美的。对于更多现实生活中的用例,库更合适。看到这个答案:stackoverflow.com/a/35961774/363573。