我的意思是,我有一个简单的2x2矩阵,我想要打印到JTextArea,但是这个矩阵使用的数字使用不同的整数长度,而且我不知道它们的长度是多少到程序执行。这意味着当我尝试整齐地格式化输出字符串时,它有时会变得不整洁。
例如,我有一个类似下面的矩阵:
| ham | spam |
ham | x | y |
spam | z | a |
但是,根据整数的长度,格式会发生变化。假如如果x等于23,则整行将沿着一个空间推动,因此它看起来不整洁,如下所示:
| ham | spam |
ham | 23 | y |
spam | z | a |
我只是想知道是否有任何方法可以避免这种情况,除了使用大量的if语句和试用/错误来使字符串大小正确。我意识到它纯粹是一种审美的东西。这对我的程序操作并不重要。我只是喜欢看起来不错的东西。
答案 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语法要为您的格式字符串找到正确的数字,您需要在打印之前检查所有行,以找出最大长度。