我的十进制到二进制转换器有问题。我正在使用String来获取一个数字然后我运行循环来寻找'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
答案 0 :(得分:0)
我假设您在提供的问题中从十进制转换为二进制。
有很多不必要的代码。你应该删除额外的变量。另外,我在最后一个循环中没有看到if-else的意思。实际的错误在于第一个for循环。它可以被转换为while循环,而不是你用来递减1和潜水2的逻辑。你正在做的是分配i = decimalNum
然后除decimalNum/2
并将i减1 {{1 }}。因此对于10,我将是10,4,1而不是10,5,2,1
i--