左对齐打印语句中的文本

时间:2015-07-23 13:39:34

标签: java java-7

我有一个键和值列表,我想打印它们,使值保持彼此对齐。例如,如果我的地图是:{(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);
}

这有效,但有点难看。我的问题是,还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试格式化字符串,如此

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

reference