Java printf使用可变字段大小?

pax*_*blo 28 java string formatting printf

我只是想将一些C代码转换为Java,我遇到了一些麻烦String.printf.

在C中,为了获得基于变量的特定宽度,我可以使用:

printf("Current index = %*d\n", sz, index);
Run Code Online (Sandbox Code Playgroud)

它会将整数格式化为特定的大小sz.

试:

System.out.println(String.format("Current index = %*d\n", sz, index));
Run Code Online (Sandbox Code Playgroud)

导致错误,因为它不喜欢*.

我目前有以下kludge:

System.out.println(String.format("Current index = %" + sz + "d\n", index));
Run Code Online (Sandbox Code Playgroud)

但是我希望有一个更好的方法,是吗?

小智 29

使用前声明一个额外的变量printf:

String format = "%" + fieldSize + "d";
System.out.printf(format, yourVariables);
Run Code Online (Sandbox Code Playgroud)

(这是我从网络搜索中找到的第一个解决方案)

  • 这与他所做的基本相同,除了你在两行中做同样的事情. (5认同)
  • 对不起,我不知道这个答案是如何有用的,因为它对这个问题没有任何帮助. (3认同)