鉴于我有以下的整数:如何在Java中
1, 10, 100
我想垫他们与零有3码:
001
010
100
和我想打印它们的前缀为10个空格:
001 //assume 10 spaces from the beginning of the line
010
100
我想要t o使用Java formatter string来完成此操作,但只能成功完成其中一个上述提及条件,但不能同时执行。
下面是2个表达我创建的完成这些条件每一个:
@Test
public void test1() {
String[] langs = { "TEXTX", "TEXTXXX", "TEXTXX" };
int[] nums = {1, 10, 100};
for (int i = 0; i < 3; i++) {
String s = langs[i];
int n = nums[i];
System.out.printf("%1$s%2$14s%3$03d\n", s, " ", n);
}
}
根据文档格式器串具有以下形式:
%[argument_index$][flags][width][.precision]conversion
但显然零填充标志参数不能跟随宽度参数,因为它被解析为导致“长宽度”的一个数字。
如何重写以完成上述条件?
注意:
我唯一的想法就是一个空格明确添加到争论和试图操纵它作为参数。事情是这样的:
System.out.printf("%1$s%2$10s%3$03d\n", s, " ", n);
编辑:
我的道歉,我才意识到,我并没有充分说明我的问题。这些数字需要遵循不同长度的某些其他字符串,像这样:
textX 001
textXXX 010
textXX 100
从而使间距是可变的。
正在打印的所有数<= 999?如果是这样的话,你可以用固定的10个空格字符串作为前缀... –
你想用@空格填充长度为10的空格,还是只需在@Jiri建议的前面添加10个空格? –
@TimBiegeleisen请参阅我的编辑 –