我需要删除零,java

时间:2012-06-24 11:42:33

标签: java binary decimal

我有这个源代码:(这是我的功课)。创建一个程序,将数字从十进制转换为二进制。 我就快完成了。

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
    }
}

3 个答案:

答案 0 :(得分:2)

您的循环错误:您从数组的末尾开始并检查数组索引是否小于数组长度 - 它始终小于数组长度。所以你得到一个ArrayIndexOutOfBoundsException。这是纠正的循环,删除了前导零:

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

答案 1 :(得分:1)

我建议你使用Integer.toBinaryString(int),转换方法就像这样

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

}

答案 2 :(得分:0)

for(i=polelength-1;i>=0;i--){

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

for(;i>=0;i--)
    System.out.print(pole[i]);