0

每当我输入 2-36 的基数时,我都想要我的代码,它可以输出一个十进制数字。这是我的代码

package code;

public class solution{
    public static int x2ten(String s, int base){

        String[] bits = s.split("");
        int result = 0;


        for(int i=0; i < bits.length; i++ ){




            int val = (Integer.parseInt(bits[bits.length-1-i])) * ((int)Math.pow(base,i));
                val = charToInt(Integer.parseInt(bits[bits.length-1-i]))* ((int)Math.pow(base,i));



            result += val;
        }
        return result;
    }

    public static int charToInt(char c){
        char[] characters = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G',
                'H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

        for(int j = 0; j<characters.length; j++){
            if(characters[j] == c){
                return j;
            }

        }
        return -1;
    }





    public static void main(String[] args)
    {
             System.out.println(x2ten("1101",2));
    }
}

一开始出现charToInt有个问题,说我应该把charToInt(char c)改成charToInt(int c)。但是 charToInt 的目的是转换我输入的任何字符,如 1A,然后它可以输出十进制的 26。

4

3 回答 3

2

这是一个已经发明出来的轮子:

public static int x2ten(String s, int base) {
    return Integer.parseInt(s, base);
}

我建议完全删除您的方法,以支持 JDK 中的方法,它甚至具有相同的签名。

于 2015-02-16T06:46:16.510 回答
1

如果您坚持使用自己的代码,您可能应该记住以下几点:

  1. 如果要获取字符串中所有字符的数组,请使用该toCharArray()方法。这为您提供了一个char[],这在您的程序的其余部分也将更有用
  2. val如果您从不使用该值并立即在其中获得另一个值,那么分配一个值有什么意义。摆脱第一行。它似乎不是很有用,不是吗?
  3. Integer.parseInt(String s)如果您在数字中使用文字,请小心。它应该抛出一个NumberFormatException.
于 2015-02-16T07:04:32.080 回答
0

如果您注意到在对函数charToInt()的函数调用中,您将整数作为参数传递,但是如果您看到函数的定义,则它需要一个字符。因此建议您将其更改为int . 希望这可以帮助 :)

于 2015-02-16T06:51:11.127 回答