0

私はこのソース コードを持っています: (これは私の宿題です)。数値を 10 進数から 2 進数に変換するプログラムを作成します。私はほとんど終わった。

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 に答える