Java 十进制到二进制转换器循环问题
我的十进制到二进制转换器有问题。我使用字符串获取一个数字,然后运行循环查找“1”。它完成了这项工作,但最后打印了太多的零。有什么想法吗?我应该寻找什么来消除过多的0Java 十进制到二进制转换器循环问题,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
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减1i--
。所以对于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循环语法中吗?先谢谢你。