Java 有没有简单的方法可以灵活地格式化使用不同整数长度的字符串输出?
我的意思是,我有一个简单的2x2矩阵,我想打印到JTextArea,但是这个矩阵使用的数字使用不同的整数长度,我不知道在程序执行之前的长度是多少。这意味着当我试图整齐地格式化输出字符串时,它有时会变得不整洁 例如,我有一个如下所示的矩阵:Java 有没有简单的方法可以灵活地格式化使用不同整数长度的字符串输出?,java,Java,我的意思是,我有一个简单的2x2矩阵,我想打印到JTextArea,但是这个矩阵使用的数字使用不同的整数长度,我不知道在程序执行之前的长度是多少。这意味着当我试图整齐地格式化输出字符串时,它有时会变得不整洁 例如,我有一个如下所示的矩阵: | ham | spam | ham | x | y | spam | z | a | 但是,根据整数的长度,格式将发生变化。假设x等于23,整行将沿一个空间推进,因此看起来不整洁,如下所示: | ham | spa
| ham | spam |
ham | x | y |
spam | z | a |
但是,根据整数的长度,格式将发生变化。假设x等于23,整行将沿一个空间推进,因此看起来不整洁,如下所示:
| ham | spam |
ham | 23 | y |
spam | z | a |
我只是想知道除了使用大量的if语句和尝试/错误来获得正确的字符串大小之外,是否还有其他方法可以避免这种情况。我意识到这纯粹是一件审美的事情。这对我的程序的运行并不重要。我只是喜欢好看的东西。你可以使用或其印刷品
印刷品
ham | 23 | y
spam | z | y
stamp | 1984 | y
这里的魔法是通过%s
实现的,它说“将参数格式化为字符串”,并用一个数字参数化,告诉它字符串的最小长度。也就是说,如果给定的字符串比该数字短,则会用空格填充。前%s也用-
参数化,意思是“使字符串左对齐”
您可以在上了解有关格式化程序语法的更多信息
要为格式字符串找到正确的数字,您需要在打印前检查所有行以找出最大长度。为什么不使用
mystring.length()
来了解其大小,并根据字符串大小显示大量空格
字符?(字符串大小越大,每个单元格中的空格量越小)。或者,通过右键填充,您可以将单元格大小设置为所有字符串长度的最大值+2(前一个空格,后一个空格)。我最终使用了string.length()和许多if语句,但它现在起作用了。谢谢!这是对我刚才所写内容的更简洁的解决方案。我可能会回去用printf替换所有东西。谢谢你!还有一个简单的问题,您知道JTextArea.append()是否删除了某些空格吗?我的控制台中有一个输出,它看起来很好,然后打印相同字符串的JTextArea使输出看起来很奇怪,如下面的要点:编辑:或者实际上这可能与JTextArea的字符没有规则的间距有关?是的,这很可能是字体问题。在“普通”字体中,每个字符都有自己的宽度,因此文本更容易阅读。“l”比“m”窄得多。在编码中,通常使用单间距字体,所有字符的宽度都相同。因此,要正确显示表格,必须在JTextField中设置单间距字体。看一看,看看如何做到这一点。
ham | 23 | y
spam | z | y
stamp | 1984 | y