java - 如何使用 printf() (Java) 正确格式化文本

标签 java printf

您好,我想打印一些东西以便它们对齐。

    for (int i = 0; i < temp.size(); i++) {
        //creatureT += "[" + temp.get(i).getCreatureType() + "]";
        creatureS = "\t" + temp.get(i).getName();
        creatureT = " [" + temp.get(i).getCreatureType() + "]";
        System.out.printf(creatureS + "%15a",creatureT + "\n");
   }

输出是

    Lily      [Animal]
    Mary         [NPC]
    Peter      [Animal]
    Squash          [PC]

我只想让[动物]、[NPC]和[PC]像这样对齐

    Lily      [Animal]
    Mary      [NPC]
    Peter     [Animal]
    Squash    [PC]

假设我知道没有名称会超过 15 个字符。

最佳答案

我认为您会发现在格式字符串本身中进行所有格式化要容易得多,即

System.out.printf("\t%s [%s]\n", creature.getName(), creature.getCreatureType());

会打印

  Lily [Animal]
  etc...

可以咨询String formatting documentation关于用于为字符串打印至少 15 个空格以实现对齐效果的确切格式,例如

System.out.printf("\t%15s[%s]\n", creature.getName(), creature.getCreatureType());

关键是为 %15s 中的参数列表中的第一项指定 15 个字符的“宽度”。

关于java - 如何使用 printf() (Java) 正确格式化文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5806886/

相关文章:

c - 打印 uint16_t 类型

java - SplittableRandom 有什么意义?

java - 如何在java、spring boot中显示/测量 tibco 队列/主题的深度和阈值

java - Google map 最后的好 map 位置

c - 浮点格式直到指定数字

bash - 根据列值打印n次字符

java - 如何获得准备好嵌入的 Mac JRE(在 Linux 上)?

java - 更好的 GUI 类组织?

c - 简单的 C 程序在变量应该 scanf 后一致地将变量打印为 6356748

c - 属性格式说明符警告。需要一些澄清