inttime[]
是一个已保存单位数整数值的数组。第一个for
循环试图将每个整数转换为二进制字符串并将其存储到字符串数组bintime[]
。这部分工作正常,但是当我尝试运行下一个for循环时,我得到了非法的格式转换错误。
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
数组,为什么会发生这种情况?
答案 0 :(得分:6)
如果bintime
数组中包含Strings
- 正如您所说,并且您从Integer.toBinaryString
分配给数组 - 您会看到来自format
的异常尝试将String
打印为int
:%d
格式需要int
,而不是String
。
如果您尝试填充基数2的String
表示,请使用以下内容:
System.out.println(
String.format("%4s", Integer.toBinaryString(inttime[idx])).replace(' ', '0'));
格式字符串中的4
表示String
的最小宽度,较短的字符串将用空格填充。