如何将整数数组转换为二进制?

Ras*_*aza 5 java string binary integer binary-string

for (int i = 0; i < n; i++) {
    arr[i] = scanner.nextInt();
}
String[] bin = new String[n];
for (int i = 0; i < n; i++) {
    bin[i] = Integer.toBinaryString(arr[i]);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将整个整数数组转换为Strings数组(包含输入字符串的二进制格式),但有一个警告。

例如:
如果输入数组是:2 3 7 10
二进制字符串数组将是:10
11
111
1010

但我希望输出数组如下所示:
0010
0011
0111
1010

#2
如果输入数组是:2 10 20
二进制字符串数组将是:
10
1010
10100

但我希望输出数组如下所示:
00010
01010
10100

hev*_*ev1 4

要使所有二进制字符串与最长的长度匹配String,可以先找到最长的长度,然后使用String#formatString#replace用零填充。

int maxLen = 0;
for (int i = 0; i < n; i++) {
    bin[i] = Integer.toBinaryString(arr[i]);
    maxLen = Math.max(maxLen, bin[i].length());
}
for (int i = 0; i < n; i++) {
    if (bin[i].length() != maxLen)
        bin[i] = String.format("%" + maxLen + "s", bin[i]).replace(' ', '0');
    System.out.println(bin[i]);
}
Run Code Online (Sandbox Code Playgroud)