为什么我不能使用String.format()来格式化来自Integer.toBinaryString()的字符串?

use*_*288 2 java string string-formatting

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]));
}
Run Code Online (Sandbox Code Playgroud)

如果bintime[]String数组,为什么会发生这种情况?

pb2*_*b2q 6

如果bintime数组成立Strings- 正如您所声明的那样,并且您正在从中分配数组Integer.toBinaryString- 您将看到format尝试打印Stringas 的异常int:%d格式需要a int,而不是a String.

如果您尝试填充String基数2 的表示,请使用以下内容:

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

4格式串表示最小的宽度String,更短的字符串将与空格填充.