0

有一个程序,我想从数组中输出值。使用制表符 (\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
4

1 回答 1

1

更改格式字符串如下:

  1. 向第一个格式说明符添加宽度说明符以指定第一列的宽度
  2. -在所有格式说明符上添加一个标志以左对齐值

更新后的格式字符串将是"%-40s%-40s%-32s%-32s%-32s%-32s\n".

有关详细信息,请参阅格式字符串语法

请注意,此解决方案有几个限制:

  • 仅当您使用固定宽度的字体时才有效
  • 如果任何字符串比提供的宽度长,它会将其余的行推出,并且列不会对齐。
  • 用户将无法轻松操作数据(列宽、列顺序、排序顺序)
  • 用户将无法轻松复制输出并直接粘贴到电子表格中。

替代方案包括

  • 使用 aJTable会更灵活,但这需要更多的编码。
  • 用于分隔字段而不是用\t空格填充。此选项将允许复制到电子表格中,但仍有其他限制,如果列值的长度不大致相同,则可能更难以对齐列值。
于 2013-07-23T13:23:41.983 回答