如何将输入String转换为具有基本转换的整数

时间:2015-02-16 06:36:38

标签: java base-conversion

每当我从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十进制。

3 个答案:

答案 0 :(得分:2)

这是一个already been invented

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

我建议完全使用JDK中的方法来删除你的方法,JDK甚至具有相同的签名。

答案 1 :(得分:1)

如果您坚持使用自己的代码,您应该记住以下事项:

  1. 如果要为字符串中的所有字符获取数组,请使用toCharArray()方法。这会为您提供char[],这在您的其他程序中也会更有用
  2. 如果您从未使用该值并立即获得另一个值,那么为val分配值的重点是什么。摆脱第一线。这似乎不是很有用,是吗?
  3. 如果您在数字中使用文字,请注意Integer.parseInt(String s)。它应该抛出NumberFormatException

答案 2 :(得分:0)

如果您在 charToInt()函数的函数调用中注意到,您将传递整数作为参数,但如果你看到你的函数的定义,它期待一个字符。因此建议你把它改成 int 。希望这会有所帮助:)