丢失Java printf格式说明符中的幻数以生成列

man*_*der 6 java printf magic-numbers

在C中,该printf函数具有很好的通配符功能,您可以在其中使用星号,您通常会在其中放置一个指定最小列宽的int.所以你可以去

#DEFINE COL_WIDTH 20;  
Run Code Online (Sandbox Code Playgroud)

在预处理器指令中,然后你可以放

printf("%*s", COL_WIDTH, myString);
Run Code Online (Sandbox Code Playgroud)

以20个字符的列打印myString.

这个星号技巧似乎没有在Java中实现.我得走了

printf("%20s", myString); 
Run Code Online (Sandbox Code Playgroud)

代替.这是一个公然的神奇数字,特别是如果你试图使用printf来做一些像你想要一个简单的方法来一次改变很多行的列宽的表.所以,

  • 是否有一些我在Java中缺少printf的东西,这使得我想做的事情成为可能,或者

  • 是否有一种简洁的,更像Java的方式来格式化表格中的输出而不使用幻数?

WOU*_*nes 0

printf("%"+COL_WIDTH+"s", myString);

  • 谢谢史蒂文!我也会在 C 中使用它;如果我不在参数列表中向 printf 语句提供列宽常量,它将使 printf 语句更具可读性。 (2认同)