java不允许运行时可选宽度格式的字符串?

Jas*_*n S 3 java printf

我需要一种方法来打印一个数字作为十六进制,作为宽度为N的零填充字符串,其中N在运行时是可选择的.

这不起作用:

System.out.println(String.format("%*x", 4, 0x123))
Run Code Online (Sandbox Code Playgroud)

因为显然Java不支持运行时可选宽度格式字符串C风格使用%*.

对替代品的任何建议?

Mik*_*ffe 6

int width = 4;
String format = "%" + width + "x";
System.out.println(String.format(format, 0x123));
Run Code Online (Sandbox Code Playgroud)

:wrysmile: