同一行中多个属性的String.format()

时间:2019-01-21 14:19:20

标签: java string data-structures

我正在尝试压缩我的代码,并且在同一行中得到了四个String.format()。有没有一种方法可以更清洁,更简单地做到这一点?

我的代码块:

String startX = String.format("%03d", mission.getStartX());
String startY = String.format("%03d", mission.getStartY());
String endX = String.format("%03d", mission.getEndX());
String endY = String.format("%03d", mission.getEndY());

谢谢:)

1 个答案:

答案 0 :(得分:0)

我想整理一下,拥有DRY(不要重复自己的代码)的唯一方法是定义一个方法,例如format03d()如下:

private String format03d(int x) {
    return String.format("%03d", x);
}

一个优点是您的代码集中在一个地方。如果有一天您想更改将小数转换为字符串的方式,请在此处进行更改。

然后可以在变量上调用该方法:

String startX = format03d(mission.getStartX());
String startY = format03d(mission.getStartY());
String endX = format03d(mission.getEndX());
String endY = format03d(mission.getEndY());

我假设您的变量是整数。

如果您想走收藏之路,可以使用流。

Stream.of(
      mission.getStartX(),
      mission.getStartY(),
      mission.getEndX(),
      mission.getEndY())
   .map(x -> String.format("%03d", x))
   .collect(Collectors.toList())

这将为您提供格式化整数的列表。