0

10 進数から 2 進数へのコンバーターに問題があります。String を使用して数値を取得し、ループを実行して「1」を探します。それは仕事をしますが、最後にあまりにも多くのゼロを出力します。過剰な 0 を取り除くために何を探す必要がありますか?

System.out.print("Please enter Decimal number: ");
    int decimalNum = kybd.nextInt();

    power = 0;
    expo = 2;
    sum = 0;
    String finalNumber = "";

    for (int i = decimalNum; i >= 1; i--)
    {
        if(decimalNum%2 != 0)
        {
            finalNumber += '1'; 
        }
        else
            finalNumber += '0';


    decimalNum = decimalNum/2;

    }//end of decimalLoop

    for(int i = finalNumber.length()-1; i>=0; i--)
    {
        if(finalNumber.charAt(i)== '1')
        {
            //finalNumber = finalNumber + finalNumber.charAt(i);
            System.out.print(finalNumber.charAt(i));
        }
        else
            //finalNumber = finalNumber + finalNumber.charAt(i);
            System.out.print(finalNumber.charAt(i));
    }

10 進数を入力してください: 10

0000001010

4

1 に答える 1

0

あなたが提供した質問で、10進数から2進数に変換していると思います。

不要なコードがたくさんあります。余分な変数を削除する必要があります。また、最後のループで if-else のポイントがわかりません。実際のバグは最初の for ループにあります。これは、1 ずつデクリメントして 2 でダイビングするために使用したロジックの代わりに、while ループに変換できます。あなたが行っているのは、 i を 1 で割り当ててi = decimalNumから除算decimalNum/2して削減することi--です。したがって、10 の場合、i は 10,5,2,1 ではなく 10,4,1 になります。

String finalNumber = "";
    while (decimalNum > 0) {
        if(decimalNum%2 != 0)
            finalNumber += '1'; 
        else
            finalNumber += '0';
        decimalNum = decimalNum/2;
    }//end of decimalLoop
    for(int i = finalNumber.length()-1; i>=0; i--)
        System.out.print(finalNumber.charAt(i));
}
于 2013-10-21T01:19:36.240 に答える