0

我有这个源代码:(这是我的作业)。创建一个程序,将数字从十进制转换为二进制。我马上就好。

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

3 回答 3

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]);
}
于 2012-06-24T11:55:12.350 回答
1

我建议你使用Integer.toBinaryString(int)和 convert 方法会是这样的

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

}

于 2012-06-24T12:00:52.337 回答
0
for(i=polelength-1;i>=0;i--){

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

for(;i>=0;i--)
    System.out.print(pole[i]);
于 2012-06-24T12:12:43.563 回答