java(数组)中二进制到十进制转换的问题

java(数组)中二进制到十进制转换的问题,java,arrays,binary,decimal,Java,Arrays,Binary,Decimal,我的任务是将JLabel数组中的二进制转换为十进制,而不使用预先编写的方法(没有用户输入)。我有一个正确的想法,但由于某些原因,输出总是有点差。我已经经历了无数次,但我没有发现我的算法有任何错误,我很困惑为什么它不能产生正确的答案。如果有人能帮助我,我将非常感激。谢谢 旁注:我读过关于二进制到十进制转换的类似讨论,但我不明白如何使用数组 以下是我的代码片段: private void convert() { int[] digit = new int[8]; //tempor

我的任务是将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); 
   }
private void convert()
{
int[]位=新的int[8];//临时存储阵列
整数计数=0;
对于(int x=0;x
您从左到右跟踪二进制数,但抓取了错误的数字。您需要相同的数字,但要乘以两个的右幂-第一个索引是+n*128,而不是+n*1

int count = 0;
for(int i = 0; i < bits.length; i++) {
    count += Integer.parseInt(bits[i].getText()) * Math.pow(2, bits.length - i - 1);
}
int count=0;
for(int i=0;i
显然,您的代码片段中有一个bug

您设置了数字[x],但没有设置数字[length-1-x]

例如,x=0,您设置了数字[0],但未设置数字[7]。
因此,如果要在此处使用数字[length-1-x],则会出现错误:

count= count + digit[digit.length - 1 - x] * (int)(Math.pow(2, x));
这是此处的正确代码:

private void convert()
{
    int count = 0, length = 8;
    for(int i = 0; i < length; count += Integer.parseInt(bits[i].getText()) * (1 << (length - 1 - i)), i++);
    label.setText("" + count); 
}
private void convert()
{
整数计数=0,长度=8;

对于(int i=0;i