繁体   English   中英

Java十进制到二进制的转换错误

[英]Java decimal to binary error in conversion

我现在正在做一个数字系统代码,并且在我的 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]);

        }

    }

我建议您通过以下代码段更改代码,您还需要考虑创建具有足够维度的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]);
    }

如果您正在学习编程,您可以执行以下操作

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

您在进行转换时错过了一个循环。 下面是工作代码

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

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM