你能帮我找到一种在二进制字符串左侧添加零的方法吗?我认为这是可行的,但它只是打印没有 0 的二进制文件。
package flipping_bits;
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int cases = input.nextInt(); //Número de casos
int[] dec_nums=new int[cases]; //Arreglo contenedor de casos
for (int i=0;i<cases;i++){
dec_nums[i]=input.nextInt(); //Almacenamiento de casos
}
int[] bin_nums=new int[cases]; //Arreglo con dec-bin
for (int i=0;i<cases;i++){
bin_nums[i]=Integer.parseInt(String.format("%032d",(Integer.parseInt(Integer.toBinaryString(dec_nums[i]))))); //Convertir cada decimal en el arreglo a binario
}
//Imprimir binarios
for (int i=0; i<cases;i++){
System.out.println(bin_nums[i]);
}
}
}
最佳答案
如果我正确理解你的问题,只需将 bin_nums
从 int[]
更改为 String[]
并且不解析您格式化的整数,您最终将得到一个整数的 32 位表示
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int cases = input.nextInt(); //Número de casos
int[] dec_nums=new int[cases]; //Arreglo contenedor de casos
for (int i=0;i<cases;i++){
dec_nums[i]=input.nextInt(); //Almacenamiento de casos
}
String[] bin_nums=new String[cases]; //Arreglo con dec-bin
for (int i=0;i<cases;i++){
bin_nums[i]=(String.format("%032d",(Integer.parseInt(Integer.toBinaryString(dec_nums[i]))))); //Convertir cada decimal en el arreglo a binario
}
//Imprimir binarios
for (int i=0; i<cases;i++){
System.out.println(bin_nums[i]);
}
}
这是我的测试用例,其结果是:
3
1
2
3
00000000000000000000000000000001
00000000000000000000000000000010
00000000000000000000000000000011
但是假设您可能正在尝试解决一些通常需要您以最佳方式解决的算法问题,那么这可能不会成功,并且可能会超出时间限制。
由于名为 Solution
的类和代码风格,这看起来像是一个练习,例如:测试用例、测试用例数量...
关于java - 在二进制字符串的左侧添加零 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40853964/