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

标签 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。我不确定我哪里出错了。

最佳答案

首先,您应该以反向模式迭代 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;
    }

关于java - 在将二进制转换为十进制的程序中不断得到错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58361007/

相关文章:

Java 线程池执行器监控

java - Redis FIFO按分数集排序?

java - 不允许将保留的 SQL 关键字 'User' 作为简单类型名称

java - HDIV : not redirecting to errorpage when HDIV_PARAMETER_NOT_EXISTS

java - Sprite 只是可见并没有完全消失

java - 有没有办法使用 liquibase 截断所有表?

java - Maven:覆盖父pom以将映射添加到 'rpm-maven-plugin'

java - 如何格式化这个 java.sql.date?

java - 打印出文件包含的行数

java - 更新 TextView