0

你能帮我找到一种在二进制字符串左侧添加零的方法吗,这就是我认为可行的方法,但它只是打印没有 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]);
    }

}
}
4

2 回答 2

1

如果我正确理解您的问题,只需bin_nums从a 更改int[]为 aString[]并且不解析您格式化的整数,您最终将得到一个整数的 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,例如:测试用例,测试用例的数量......

于 2016-11-28T21:49:29.343 回答
0

使用以下示例在数组中的每个二进制数前面添加 0:

bin_num[0] = thisBinarynumber updatedNumber = '0' + thisBinarynumber

于 2016-11-28T21:44:09.587 回答