有一个程序,我想输出数组中的值。使用制表符 (\t) 或格式,例如 (%40s) 不能解释不同长度的字符串。
下面的当前代码适合标题。
System.out.format("%s%40s%32s%32s%32s%32s\n","ID","NAME","SURNAME","POSITION","CONTACT","EMAIL");
但是,不适用于不同Lenths的值
我想要下面这样的东西***
Name Surname ID Position
Joanne Bassy 0000001 Manager
Mannnny papsasjkasjnnxz 0000002 Boss
我明白了***
Name Surname ID Position
Joanne Bassy 0000001 Manager
Mannnny papsasjkasjnnxz 0000002 Boss
最佳答案
按如下方式更改格式字符串:
- 向第一个格式说明符添加宽度说明符以指定第一列的宽度
- 在所有格式说明符上添加
-
标志以使值左对齐
更新后的格式字符串将为“%-40s%-40s%-32s%-32s%-32s%-32s\n”
。
请参阅Format String Syntax了解更多详情。
请注意,此解决方案有几个限制:
- 仅当您使用固定宽度字体时才有效
- 如果任何字符串比提供的宽度长,它会将行的其余部分推出,并且列不会对齐。
- 用户将无法轻松操作数据(列宽、列顺序、排序顺序)
- 用户将无法轻松复制输出并直接粘贴到电子表格中。
替代方案包括
- 使用
JTable
,这会更灵活,但需要更多编码。 - 使用
\t
分隔字段,而不是用空格填充。此选项允许复制到电子表格中,但仍然存在其他限制,并且如果列值的长度不大致相同,则可能更难以排列列值。
关于具有多个字符串值的 Java 格式输出到 Console/JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17808942/