Java 十进制到二进制转换器循环问题

Java 十进制到二进制转换器循环问题,java,loops,for-loop,Java,Loops,For Loop,我的十进制到二进制转换器有问题。我使用字符串获取一个数字,然后运行循环查找“1”。它完成了这项工作,但最后打印了太多的零。有什么想法吗?我应该寻找什么来消除过多的0 System.out.print("Please enter Decimal number: "); int decimalNum = kybd.nextInt(); power = 0; expo = 2; sum = 0; String finalNumber = ""; fo

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

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

有很多不必要的代码。您应该删除额外的变量。另外,我不认为在最后的循环中使用if-else有什么意义。实际的bug存在于第一个for循环中。它可以转换为while循环,而不是使用递减1和递减2的逻辑。您所做的是赋值
i=decimalNum
然后除以
decimalNum/2
并将i减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));
}

谢谢你的意见。我确实删除了我的最后一个if循环,并用你的替换了它,但我仍然得到了两个多零。有什么原因吗?请输入十进制数:100000001010@user2888585你是否更改了你的第一个for循环?如果我想使用for循环,它会是什么样子?如果你想使用for循环,它应该用于(;decimalNum>0;decimalNum/=2)hrv,我不理解你的最后一个答案。你能把它放到for循环语法中吗?先谢谢你。