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

时间:2011-01-04 18:01:44

标签: java printf

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

这不起作用:

System.out.println(String.format("%*x", 4, 0x123))

因为显然Java不支持C-style use of %* for runtime-selectable width format strings

有关替代方案的任何建议吗?

3 个答案:

答案 0 :(得分:6)

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

:wrysmile:

答案 1 :(得分:1)

@fd也使用printf

int width = 4;
String format = "%" + width + "x";
System.out.printf(format, 0x123);

System.out.printf("%4x", 0x123);

答案 2 :(得分:-2)

使用适当的NumberFormat。

修改

这是完全错误的..