鑑於我有以下的整數:如何在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請參閱我的編輯 –