2012-08-31 40 views
2

inttime[]是一個已經存儲了一位數的整數值的數組。第一個for循環試圖將每個整數轉換爲二進制字符串並將其存儲到字符串數組bintime[]。這部分工作正常,但是當我嘗試運行下一個for循環時,出現非法格式轉換錯誤。爲什麼我不能使用String.format()來格式化來自Integer.toBinaryString()的字符串?

for(int j = 0; j < inttime.length; j++){ 
bintime[j] = Integer.toBinaryString(inttime[j]); 
} 

for(int a = 0; a < bintime.length; a++){ 
System.out.println(String.format("%04d",bintime[a])); 
} 

這究竟是爲什麼,如果bintime[]String陣列?

+1

'%04d'需要一個整數(因此'd')。使用'%04s'。 – oldrinb

+0

您的問題可以解答您的問題 - 爲什麼您不能將字符串格式化爲數字?因爲他們是字符串。 –

+1

您可以使用System.out.format作爲快捷方式。 – maba

回答

5

如果bintime數組保存Strings - 正如你說,你是從Integer.toBinaryString分配給陣列 - 你會看到一個異常從format要打印的Stringint:在%d格式要求的int,而不是String

如果你想墊基2號的String表示,然後使用類似:

System.out.println(
    String.format("%4s", Integer.toBinaryString(inttime[idx])).replace(' ', '0')); 

4格式字符串代表最小寬度String的,短串將填充空格。

+1

沒有意義推斷,他在他的帖子末尾說明:-p – oldrinb

+0

@veer所以他這樣做,謝謝 – pb2q

+0

當我嘗試「%04s」時,它說「FormatFlagsConversionMismatchException」... – user1604288

相關問題