java - 二进制到十进制转换器函数给出了错误的解决方案

标签 java binary

就像标题所说,我做了一个小函数,它从用户的 1 和 0 字符串中获取,输出应该是它的十进制数,但由于某种原因我得到了错误的答案,希望你能帮助我找到问题。

public class ToDecimal{
public static void main(String[] args){

    String string = args[0];

    int length = string.length();
    int power = length - 1;
    int decimal = 0;

    while(length > 0){

        if (string.charAt(length - 1) == '1'){
            decimal = decimal + (int)(Math.pow(2, length - 1));
        } else if (string.charAt(length - 1) == '0'){

        } else {
            System.out.println("Wrong string spelling...");
        }

        length--;
    }

    System.out.println(decimal);

}

}

最佳答案

您正在按倒序应用指数。也就是说,在第一个循环中,您查看最后一个字符,但应用最大指数 length - 1 ,第一个字符得到指数 0 .

使用power作为指数而不是 length - 1 ,并增加 powerwhile 的末尾循环。

    decimal = decimal + (int)(Math.pow(2, power));

    length--;
    power++;
}

关于java - 二进制到十进制转换器函数给出了错误的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33509354/

相关文章:

java - 如何对读取 Java 输入的类进行单元测试?

java - 图像绘制在错误的位置

java - 如何从 Java 中的二进制表示形式获取 float ?

C 语言 以二进制方式访问内存

java - Java中的时间常数?

java - sql2o 无法在 oracle DB 上删除

java - Spring Kafka - 动态创建流

go - 为什么 byte cast 炸毁不一致的 golang?

java - C# 中的 readInt16() 与 java 中的 readShort()

image - 在 Java 中将图像和音频文件转换为二进制文件