我正在开发这个程序,该程序采用二进制字符串并将其转换为十进制,使用本指南将二进制转换为十进制。当我在脑海中运行 for 循环时,我得到了正确的输出。然而,当我运行我的程序时,我得到了这个奇怪的输出:
1
3
7
15
31
63
127
实际输出应如下所示:
1
2
5
11
22
44
89
我这辈子都想不通。为什么我的程序会这样做?这是当前的源代码:
public class BinaryToDecimal
{
public static void main(String[] args)
{
String binary = "1011001";
int toMultiplyBy;
int decimalValue = 0;
for (int i = 1; i <= binary.length(); i++)
{
int whatNumber = binary.indexOf(i);
if (whatNumber == 0)
{
toMultiplyBy = 0;
}
else
{
toMultiplyBy = 1;
}
decimalValue = ((decimalValue * 2) + toMultiplyBy);
System.out.println(decimalValue);
}
}
}