gpt4 book ai didi

java - 我正在尝试将二进制数转换为十进制数,但我的输出始终为 0

转载 作者:行者123 更新时间:2023-11-30 01:54:56 24 4
gpt4 key购买 nike

这是我的代码。我尝试将二进制转换为 Char 数组,然后将数组中的每个 char 乘以 2 的数组中对应数字的幂,然后将 char 数组的所有值相加为 double。刚接触编程所以有点困惑。我的输入 Binary 是 txfBinaryInput,我的输出标签是 lblDisplay。

 private void btnProcessActionPerformed(java.awt.event.ActionEvent evt)                                           
{
if (txfBinaryInput.getText().equals(""))
{
lblDisplay.setText("ERROR: NO INPUT");
} else
{
int n = 0;
int[] binaryValueStorage = new int[100];
double[] decimalValueStorage = new double[100];
String binaryInput = txfBinaryInput.getText();
int binaryNumber = binaryInput.length();
char[] binaryDigits = binaryInput.toCharArray();
for (int i = 0; i >= binaryNumber; i++)

{
binaryValueStorage[n] = binaryDigits[n];
decimalValueStorage[n] = binaryValueStorage[n] * (Math.pow(2, n));
n++;
}
double sum = 0;
for (double a : decimalValueStorage)
{
sum += a;
}
lblDisplay.setText("The Deciaml Value Is " + sum);
}
}

最佳答案

注意:在 for 循环条件中,您有 i >= binaryNumber而不是i < binaryNumber ,因此你的程序永远不会进入循环!

附带说明一下,为什么要使用两个变量 in ,出于相同的目的(递增和访问数组)?

编辑:另一个问题:

在二进制数中,低位是从右,但在数组中,索引是从左到右!!

因此,您希望将最右边的数字乘以 2^0,将其左边的下一个数字乘以 2^1,依此类推。

但在您的代码中,发生的情况恰恰相反:最左边的数字(索引 0 处的数字)被乘以 2^0!

要修复,您可以:

1) 反转您的 binaryDigits开始转换之前的数组,并保持其余代码不变

2) 替换decimalValueStorage[n] = binaryValueStorage[n] * (Math.pow(2, n));通过decimalValueStorage[n] = binaryValueStorage[n] * (Math.pow(2, binaryNumber - n));

希望这有帮助!

关于java - 我正在尝试将二进制数转换为十进制数,但我的输出始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54834421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com