【问题标题】:Left aligning text in print statements [duplicate]打印语句中的左对齐文本[重复]
【发布时间】:2015-10-13 20:40:13
【问题描述】:

我有一个键和值的列表,我想打印它们,这样这些值就可以彼此对齐。因此,例如,如果我的地图是:{(key9, val9), (key10, val10)} 我想将其打印为:

key9:  val9
key10: val10

我目前的解决方案很丑:

int maxKeyLength = findMaxKeyLength(myMap);
for (String key : myMap.keySet()) {
  int numSpaces = maxKeyLength - key.size() + 1;
  // TODO: use StringBuilder instead.
  String toPrint = key + ":";
  for (int i = 0;i < numSpaces;++i) {
    toPrint += " ";
  }
  toPrint += myMap.get(key);
  print(toPrint);
}

这可行,但有点难看。我的问题是,有没有更好的方法来做到这一点?

【问题讨论】:

  • 这是很好的解决方案,不是吗?
  • 正如我所说的那样工作,但必须有一个更好的解决方案,不需要嵌套 for 循环和 10 行代码。也许是一些魔术转义字符或库函数。
  • @BenjyKessler 为避免嵌套循环并使代码看起来更简单,您可以创建 align 函数并使用它,但这无济于事。
  • 我链接的答案应该使用 printf 方法解决问题。
  • 问题,我的问题与我正在寻找的问题重复。我知道必须有一些 printf 魔法才能奏效。

标签: java java-7


【解决方案1】:

你可以试试格式化字符串,像这样

for (String key : myMap.keySet()) {
   System.out.printf( "%-9s %-15s %n", key+":", myMap.get(key));
}

reference

【讨论】:

    猜你喜欢
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多