有没有简单的方法来整齐地格式化使用不同整数长度的字符串输出?

时间:2017-12-22 13:03:28

标签: java

我的意思是,我有一个简单的2x2矩阵,我想要打印到JTextArea,但是这个矩阵使用的数字使用不同的整数长度,而且我不知道它们的长度是多少到程序执行。这意味着当我尝试整齐地格式化输出字符串时,它有时会变得不整洁。

例如,我有一个类似下面的矩阵:

     | ham | spam |
ham  |  x  |   y  |
spam |  z  |   a  |

但是,根据整数的长度,格式会发生变化。假如如果x等于23,则整行将沿着一个空间推动,因此它看起来不整洁,如下所示:

     | ham | spam |
ham  |  23  |   y  |
spam |  z  |   a  |

我只是想知道是否有任何方法可以避免这种情况,除了使用大量的if语句和试用/错误来使字符串大小正确。我意识到它纯粹是一种审美的东西。这对我的程序操作并不重要。我只是喜欢看起来不错的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用String.format()或其等效的System.out.printf()

System.out.printf("%-10s | %5s | %s \n", "ham", 23, "y");
System.out.printf("%-10s | %5s | %s \n", "spam", "z", "y");
System.out.printf("%-10s | %5s | %s \n", "stamp", 1984, "y");

打印

ham        |    23 | y 
spam       |     z | y 
stamp      |  1984 | y 

这里的魔力是由%s完成的,它表示"将参数格式化为字符串"使用一个数字进行参数化,该数字告诉它字符串的最小长度。这意味着,如果给定的String比该数字短,则将用空格填充。第一个%s也使用-进行参数化,这意味着"使字符串左对齐"

您可以在javadoc page

上详细了解Formatter语法

要为您的格式字符串找到正确的数字,您需要在打印之前检查所有行,以找出最大长度。