二进制到十进制转换器功能给出了错误的解

Jos*_*101 0 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);

}
Run Code Online (Sandbox Code Playgroud)

}

rge*_*man 6

您以向后的顺序应用指数.也就是说,在第一个循环中,您查看最后一个字符,但应用最大的指数length - 1,并且第一个字符获得指数0.

使用power的指数,而不是length - 1和增量power在结束while循环.

    decimal = decimal + (int)(Math.pow(2, power));
Run Code Online (Sandbox Code Playgroud)

    length--;
    power++;
}
Run Code Online (Sandbox Code Playgroud)