2

inttime[]は、すでに1桁の整数値を保持している配列です。最初のforループは、各整数を2進文字列に変換し、それを文字列配列に格納しようとします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

4

1 に答える 1

6

bintime配列が保持されている場合(前述のStringsように、から配列に割り当てている場合)、次のように出力しようとするとInteger.toBinaryString例外が発生します。形式では、ではなく、が必要です。formatStringint%dintString

String2進数の表現を埋めようとしている場合は、次のようなものを使用します。

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

4フォーマット文字列のは、の最小幅を表し、短い文字String列にはスペースが埋め込まれます。

于 2012-08-31T22:53:42.397 に答える