0

2-36 の基数を入力するたびにコードが必要です。10 進数の数値を出力できます。ここに私のコードがあります

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のような文字を入力したものを変換することであり、10進数で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 に答える