如何将指数定义为字符串的索引位置

时间:2014-10-01 01:05:10

标签: java eclipse variables char int

我正在尝试创建一个将二进制数转换为基数为10的int方法。我认为我的循环结构正确,但我无法弄清楚如何将索引位置与指数相关联。基本上如果字符串中有一个'1',我想将它返回为2,无论该char的索引位置是什么。此外,这将要求我反转索引(以便0位置是字符串最右边的字符。这是我到目前为止:

public static int BinaryToNumber(String numberInput)
{
    int len = numberInput.length();

    for(int i=len-1; i<len; i--)
    {
        if(i == '1');
        {
            return n;
        }
    }
    return 0; 
}

提前谢谢!

2 个答案:

答案 0 :(得分:0)

我希望在可能的情况下使用Java内置例程 - 正如我在评论Integer.parseInt(numberInput, 2);中所说的那样。按照惯例,Java方法名称以小写字母开头。最后,您可以修复代码(我添加了一个小测试工具),例如

public static int binaryToNumber(String numberInput) {
    if (numberInput == null) {
        return 0;
    }
    int ret = 0;
    char[] ni = numberInput.trim().toCharArray();
    for (int i = 0; i < ni.length; i++) {
        if (ni[i] == '1') {
            // This is 2 ^ (n) where (n) is based on the position from the right.
            ret += 1 << ni.length - i - 1;
        }
    }
    return ret;
}

public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        String t = Integer.toBinaryString(i);
        System.out.printf("%s = %d%n", t, binaryToNumber(t));
    }
}

答案 1 :(得分:0)

这是我对问题的实施

public static void main(String[] args) {
    String str = "100101";
    System.out.println(toDecimal(str));
}

private static int toDecimal(String binary) {
    int result = 0;
    for(int i = 0; i < binary.length(); i++) {
        int a = (int) binary.charAt(i) - 48;
        double secondPart = 1 << (binary.length()-1) - i;
        result +=  a * secondPart;
    }

    return result;
}

我希望有所帮助 萨拉姆