Ik moet de nullen verwijderen, java

ik heb deze broncode: (het is mijn huiswerk). Maak een programma dat getallen omrekent van decimaal naar binair. ik ben bijna klaar.

package binek;

import java.io.BufferedReader; 
import java.io.IOException;        
import java.io.InputStreamReader;

public class Binek {
    public static void main(String[] args) {
         String cislo;  
         int vypocet=1;
         int zbytek=1;
         int a=0;

         BufferedReader in;
         in = new BufferedReader(new InputStreamReader(System.in));
         try{ cislo = in.readLine(); }
         catch(IOException e) {cislo="";} 
         int dec=Integer.valueOf(cislo); 
         int[] pole = new int[10];
         vypocet=dec/2;
         zbytek=dec%2;
         pole[0]=zbytek;

         while(vypocet!=0){
             a++;
             zbytek=vypocet%2;
             vypocet=vypocet/2;

             pole[a]=zbytek;
         }

         for (int i = 9; i < pole.length; --i)
         {
            System.out.print (pole[i]);
         }//here is the field with unnecessary zeros
    }
}
0
Welkom bij Stack Overflow! Wat is de vraag ? Vragen over je huiswerk is prima hier op SO (zorg ervoor dat je de huiswerk -tag gebruikt die Matzi voor je heeft toegevoegd), maar de vraag moet heel gericht en specifiek zijn voor een bepaald probleem dat je ondervindt.
toegevoegd de auteur T.J. Crowder, de bron
Welkom bij Stackoverflow user1477988. Mensen, het is niet nodig om een ​​vraag in de vergetelheid te modelleren als de gebruiker bereid is om enkele wijzigingen aan te brengen (binnen de eerste 26 minuten om niet minder te vragen).
toegevoegd de auteur Maarten Bodewes, de bron
ik ben bijna klaar .. Gefeliciteerd !! :) Nog iets anders?
toegevoegd de auteur Asif, de bron
Ik denk dat OP duidelijk zei ik moet de nullen verwijderen en //hier is het veld met onnodige nullen
toegevoegd de auteur Ravinder Reddy, de bron
Ok, dus wat doet deze code? En wat moet het doen?
toegevoegd de auteur Oliver Charlesworth, de bron
@Ravinder: Dus dat deed hij. Maar het probleem beschrijven door het te begraven als een opmerking in een groot stuk code is niet "duidelijk"!
toegevoegd de auteur Oliver Charlesworth, de bron
Sorry voor mijn slechte Engels..
toegevoegd de auteur user1477988, de bron
ik moet de nullen verwijderen ... voor onderzoek: invoer is 4 ... uitvoer is 0000000100, ik moet de eerste 7 nullen verwijderen (ik moet alleen 100-binair worden) begrijpen?
toegevoegd de auteur user1477988, de bron

3 antwoord

Je lus klopt niet: je begint vanaf het einde van de array en controleert of de array-index kleiner is dan de seriegrootte - het is altijd minder dan dat. Dus je krijgt een ArrayIndexOutOfBoundsException. Dit is de gecorrigeerde lus, waarbij voorloopnullen zijn verwijderd:

boolean leadingZeros = true;
for (int i = pole.length; i > 0; i--) {
  if (leadingZeros && pole[i-1] == 0) continue; else leadingZeros = false;
  System.out.print(pole[i-1]);
}
2
toegevoegd
(een opmerking over SO-regels: geen reden om mondeling te bedanken, maar schakel het grote vinkje links van het antwoord in om het als geaccepteerd te markeren).
toegevoegd de auteur Marko Topolnik, de bron
Wauw dankjewel! :)
toegevoegd de auteur user1477988, de bron

Ik raad u aan om te gebruiken Integer.toBinaryString (int) en converteermethode zullen als volgt zijn

public void convertToBinary(int decimal){
   System.out.println("Decimal value is " + decimal);
   System.out.println("Binary value is " + Integer.toBinaryString(decimal));

}

1
toegevoegd
Het kan worden gebruikt om de juistheid van het antwoord te controleren, maar het lijkt precies de vereiste uitvoer te zijn.
toegevoegd de auteur Maarten Bodewes, de bron
Als het doel van het huiswerk het implementeren van het conversie-algoritme is, zou dit hetzelfde zijn als "het antwoord kopiëren" :)
toegevoegd de auteur Marko Topolnik, de bron
Aangezien dit huiswerk is, is dit waarschijnlijk geen optie.
toegevoegd de auteur Marko Topolnik, de bron
Het kan een van de varianten zijn
toegevoegd de auteur Sergii Zagriichuk, de bron
+1 Voor het testen van eigen algoritme
toegevoegd de auteur Sergii Zagriichuk, de bron
for(i=polelength-1;i>=0;i--){

    if(pole[i] != 0) break;           
}

for(;i>=0;i--)
    System.out.print(pole[i]);
0
toegevoegd
pole [pole.length-1] is het eerste dat wordt afgedrukt, ongeacht de waarde, nietwaar? En waarom zet je i - in de body voor ?
toegevoegd de auteur Marko Topolnik, de bron
Dit corrigeert een fout, maar geeft geen antwoord op de vraag. OP was niet eens op de hoogte van deze bug :)
toegevoegd de auteur Marko Topolnik, de bron
ja ..... sorry abt dat miste dat hij de array met 10 elementen initialiseerde
toegevoegd de auteur Vizard, de bron