2016-11-28 80 views
0

您可以幫我找到一種方法在二進制字符串的左側添加零,這裏是我認爲可以工作的,但它只是打印沒有0的二進制文件。在二進制字符串左邊添加零 - Java

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]); 
    } 

} 
} 
+0

您可以爲您提供從讀取文件的輸入?另外我假設這是來自像hackerrank.com這樣的算法培訓網站。如果是這樣,你可以檢查那裏的討論 – vlatkozelka

+0

它來自[https://www.hackerrank.com/challenges/flipping-bits]我已經檢查了討論部分,沒有人使用Java。那麼,我沒有找到我能理解的代碼,因爲我必須向我的教授解釋我是如何解決這個問題的。 –

回答

1

如果我明白你問題正確,只需將bin_numsint[]更改爲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類的鍛鍊和代碼的風格,如:測試用例,測試用例數...

+0

謝謝!這正是我想要的。是的,它實際上來自HackerRank的算法部分,專門用於翻轉位。在此之後,我必須翻轉所有32位並以十進制打印最終數字。你會建議我什麼? –

+0

我建議你學習按位操作的基礎知識和「作弊」。 http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/ – vlatkozelka

0

在每個二進制數的前你陣列中與下面的示例中添加0:

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