java(数组)中二进制到十进制转换的问题
我的任务是将JLabel数组中的二进制转换为十进制,而不使用预先编写的方法(没有用户输入)。我有一个正确的想法,但由于某些原因,输出总是有点差。我已经经历了无数次,但我没有发现我的算法有任何错误,我很困惑为什么它不能产生正确的答案。如果有人能帮助我,我将非常感激。谢谢
旁注:我读过关于二进制到十进制转换的类似讨论,但我不明白如何使用数组
以下是我的代码片段:
private void convert()
{
int[] digit = new int[8]; //temporary storage array
int count = 0;
for(int x = 0; x < digit.length; x++)
{
digit[x] = Integer.parseInt(bits[x].getText()); //bits is the original array
count= count + digit[digit.length - 1 - x] * (int)(Math.pow(2, x));
}
label.setText("" + count);
}
# 1 楼答案
你从左到右跟随二进制数,但抓错了数字。你想要相同的数字,但要乘以二的右幂——第一个索引是+n*128,而不是+n*1
# 2 楼答案
显然,你的代码片段中有一个bug
您设置了数字[x],但没有设置数字[length-1-x]
例如,x=0,您设置了数字[0],但没有设置数字[7]。
因此,当您想在此处使用数字[length-1-x]时,会出现错误:
以下是正确的代码:
没有测试代码。但我认为它会奏效