Java decimal to binary error in conversion

91 Views Asked by At

I'm doing a number systems code right now and on my decimalToBinary, whenever I enter a decimal number it always converts it to a 1 no matter what decimal number it is. The code is down here.

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

There are 3 best solutions below

0
On

I recommend you to change the code by the following snippet, you also need to consider to create binaryVal array with a sufficient dimension in order to hold the complete number digits that it is going to generate the transformation to binary.

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

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

If you are learning programming you can do as follows

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]);
        }
    }
}

Off course there are more optimized solution. But if for other purpose you can simply do

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
On

You missed a loop while doing the conversion. below is the working code

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();

    }