在将二进制转换为十进制的程序中不断得到错误的答案

时间:2019-10-13 06:05:36

标签: java

对于家庭作业,我必须用Java编写一个程序,将用户输入的二进制数(n)转换为十进制数。我不允许使用任何作弊功能和东西。这是到目前为止我拥有的静态方法的代码:

public static int binarytodecimal(String n) {
      int answer=0; 
      int digit=0; 
      int multiplier=1;
      char index=n.charAt(digit);
      int length=n.length();
      while (index=='0' || index=='1' && digit<=length) {
          if (index=='1') {
              answer+=multiplier;
              multiplier*=2;
              digit+=1;
          }
          else {
              multiplier*=2;
              digit+=1;
          }
      }
      return answer;
  }

例如,如果n为1,当答案应该为1时,我一直得到3。我不确定我哪里出错了。

1 个答案:

答案 0 :(得分:0)

首先,您应该以反向模式遍历n(测试类似n =“ 1101”的内容,您将看到),然后在循环内部读取每个位置的位

public static int binarytodecimal(String n) {
        int answer = 0;
        int digit = n.length();
        int multiplier = 1;
        while (digit > 0) {
            char index = n.charAt(digit - 1);
            if (index == '1') {
                answer += multiplier;
                multiplier *= 2;
                digit--;
            } else {
                multiplier *= 2;
                digit--;
            }
        }
        return answer;
    }