1

私はこのクラスの問題を理解するのに苦労しました。生理予定日が明日なのですが、まだどうしたらよいかわかりません。ユーザーが入力した入力を2進数、8進数、16進数に変換する際のコードを作成しました。さて、問題は、ユーザーが倍精度または浮動小数点を入力して 10 進数に変換するようにコードを変更するように求めていることです。私の最大の問題は、10 進数を扱うことです。たとえば、5* .987 *。作成済みのコードはそのままにしておきます。誰かが助けてくれることにとても感謝しています!ありがとう :)

import java.util.Scanner;

class EncodingTester {

public static void main(String args[]) {

    byte largestPositiveByte   = 127;
    short largestPositiveShort = 32767;
    int largestPositiveInt     = 2147483647;
    long largestPositiveLong   = 9223372036854775807L;
    long largestPositiveLongPlusOne   = 9223372036854775807L;

    Scanner in = new Scanner(System.in);

    System.out.println("Next number (0 to stop): ");
    long nextNumber = in.nextLong();

    while (nextNumber != 0) {

        int radix;


        double logBase2 = Math.log(nextNumber) / Math.log(2);

        double absoluteNumOfBits = 1 + Math.floor(logBase2);

        double maxBits = Math.max(8, absoluteNumOfBits);

        double numBits = Math.log(maxBits) / Math.log(2);

        int newNumBits = (int) Math.pow(2, Math.ceil(numBits));

        System.out.println("The absolute number of bits is:  " +absoluteNumOfBits +". The final number of bits is: " +newNumBits +".");

        radix = 10;
        System.out.println("Decimal: " + String.format("%s",  Double.toString(nextNumber)).replace(' ','0'));

        radix = 2;
        System.out.println("Binary: " + String.format("%"+newNumBits+"s",  Long.toString(nextNumber,radix)).replace(' ','0'));

        radix = 8;
        System.out.println("Octal: " + String.format("%"+((int) Math.ceil(newNumBits/3.0))+"s",  Long.toString(nextNumber,radix)).replace(' ','0'));

        radix = 16;
        System.out.println("Hexadecimal: 0x" + String.format("%"+newNumBits/4+"s",  Long.toString(nextNumber,radix)).replace(' ','0'));

        System.out.println("");
        System.out.println("Next number: (0 to stop)");
        nextNumber = in.nextLong();
    }
    System.out.println("Good Bye");
 }
}
4

0 に答える 0