0

我的十进制到二进制转换器有问题。我正在使用字符串来获取一个数字,然后我运行循环来查找“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

0000001010

4

1 回答 1

0

我假设您在您提供的问题中从十进制转换为二进制。

有很多不必要的代码。您应该删除额外的变量。我也没有在最后一个循环中看到 if-else 的意义。实际的错误在于第一个 for 循环。它可以转换为 while 循环,而不是您使用的减一并潜水 2 的逻辑。您所做的是分配i = decimalNum然后将decimalNum/2i 除以 1 i--。所以对于 10,我将是 10,4,1 而不是 10,5,2,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 回答