2016-11-28 1 views
0

Können Sie mir bitte helfen, einen Weg zu finden, Nullen links von einer binären Zeichenfolge hinzuzufügen, hier ist, was ich dachte, würde funktionieren, aber es druckt nur die Binärdatei ohne Nullen.Nullen links von Binärzeichenfolge hinzufügen - 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

können Sie die Datei Eingang, von dem Sie lesen? Ich gehe auch davon aus, dass dies von einer Algorithmus-Trainingssite wie hackerrank.com stammt. Wenn ja, können Sie die Diskussionen dort überprüfen – vlatkozelka

+0

es ist von [https://www.hackerrank.com/challenges/flipping-bits] Ich habe bereits die Diskussionen Abschnitt überprüft und niemand hat es mit Java. Nun, ich habe keinen Code gefunden, den ich verstehen könnte, da ich meinem Professor dann erklären muss, wie ich ihn gelöst habe. –

Antwort

1

Wenn ich verstehe Ihre Frage richtig, ändern Sie einfach bin_nums von einem int[] zu einem String[] und analysieren Sie nicht die Ganzzahl, die Sie formatiert haben, Sie werden am Ende mit einer 32-Bit-Darstellung einer Ganzzahl

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

} 

Dies ist mein Testfall mit dem Ergebnis:

3 
1 
2 
3 
00000000000000000000000000000001 
00000000000000000000000000000010 
00000000000000000000000000000011 

Aber vorausgesetzt, Sie einigen Algorithmus Frage zu lösen, könnten versuchen, die in der Regel braucht man es in optimaler Weise zu lösen, könnte dies nicht den Trick und kann das Zeitlimit überschreiten.

Es scheint wie eine Übung wegen der Klasse mit dem Namen Solution und dem Stil des Codes, zum Beispiel: Testfall, die Anzahl der Testfälle ...

+0

Vielen Dank! Genau das wollte ich. Und ja, es ist tatsächlich von HackerRanks Algorithmen-Sektion, die speziell Bits umdreht. Danach muss ich alle 32 Bits umdrehen und die letzte Zahl in Dezimal ausgeben. Was würdest du mir vorschlagen? –

+0

Ich schlage vor, Sie lernen bit-weise Operationen Grundlagen und "Cheats". http://www.catonmat.net/blog/low-level-bit-hacks-you-absolut-must-know/ – vlatkozelka

0

Fügen Sie die 0 vor jeder Binärzahl in Sie Array mit dem folgenden Beispiel:

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

Verwandte Themen