Java десятичная в двоичную ошибку в преобразовании - PullRequest
0 голосов
/ 30 января 2020

Я делаю код системы счисления прямо сейчас и на моем decimalToBinary, всякий раз, когда я вводю десятичное число, оно всегда конвертирует его в 1, независимо от того, какое это десятичное число. Код здесь.

public static void decimalToBinary() {

        do {    
            System.out.println("Enter your decimal number");
            numDecimal = input.nextInt();

            if (numDecimal < 0) {
                System.out.println("Enter a valid number!");
            }

        } while (numDecimal < 0);

        int intNum = Integer.valueOf(numDecimal);

        int counter = 0;

        binaryVal[counter++] = intNum % 2;
        intNum = intNum/2;

        for (int i = counter-1; i >= 0; i--) {
            System.out.println("Your binary number is " + binaryVal[i]);

        }

    }

Ответы [ 3 ]

0 голосов
/ 30 января 2020

Если вы изучаете программирование, вы можете сделать следующее:

public class Test {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int intNum;
        while ((intNum = scanner.nextInt()) > 0) {
            decimalToBinary(intNum);
            System.out.println();
        }
    }

    public static void decimalToBinary(int intNum) {
        int counter = 0;
        int[] binary = new int[31];
        while (intNum > 0) {
            binary[counter++] = intNum % 2;
            intNum = intNum / 2;
        }
        for (int i = counter - 1; i >= 0; i--) {
            System.out.print(binary[i]);
        }
    }
}

Конечно, есть более оптимизированное решение. Но если для других целей вы можете просто сделать

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int intNum;
    while ((intNum = scanner.nextInt()) > 0) {
        String binary = Integer.toBinaryString(intNum);
        System.out.println(binary);
    }
}
0 голосов
/ 30 января 2020

Вы пропустили все oop во время конвертации. ниже рабочий код

public static void decimalToBinary() {
        int numDecimal = 0;
        Scanner input = new Scanner(System.in);
        int[] binaryVal = new int[100];
        do {    
            System.out.println("Enter your decimal number");
            numDecimal = input.nextInt();

            if (numDecimal < 0) {
                System.out.println("Enter a valid number!");
            }

        } while (numDecimal < 0);

        int intNum = Integer.valueOf(numDecimal);

        int counter = 0;
        while(intNum >0){
             binaryVal[counter++] = intNum % 2;
             intNum = intNum/2;
        }

        System.out.println("Your binary number is :");

        for (int i = counter-1; i >= 0; i--) {
             System.out.print("" + binaryVal[i]);

        }

        input.close();

    }
0 голосов
/ 30 января 2020

Я рекомендую вам изменить код с помощью следующего фрагмента, вам также нужно подумать о создании массива binaryVal с достаточным измерением, чтобы содержать полные цифры, которые он сгенерирует для преобразования в двоичный файл.

   do {
        binaryVal[counter++] = intNum % 2;
        intNum = intNum / 2;
    } while (intNum > 0);

    for (int i = counter - 1; i >= 0; i--) {
        System.out.print(binaryVal[i]);
    }
...