解决此算法的方式有多种

方法一、精简版

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String content = sc.next();
        System.out.println(Integer.parseInt(content.substring(2), 16));
    }
}

说明:优点: 此方法,使用了Integer封装的方法,简单易懂; 缺点:不适合我们理解进制之间转换的原理。

方法二、原理版

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;

public class Main {
    // 十六转二进制:  0xABC ==  C * 1 + B * 16 + A * 16 * 16
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String content = sc.next().toLowerCase().substring(2);
        Map<Character, Integer> map = initMap();
        int count = 0;
        for(int i=content.length()-1; i >= 0; i--) {
            int value = map.get(content.charAt(i));
            // temp 表示当前 * 16 的次数
            int temp = content.length() - 1 - i;
            if(temp == 0) {
                count += value;
                continue;
            }
            int hexVal = 1;
            while(--temp >= 0) {
                hexVal *= 16;
            }
            count += value * hexVal;
        }
        System.out.println(count);
    }
    
    public static Map<Character, Integer> initMap() {
        Map<Character, Integer> map = new HashMap<>();
        map.put('0', 0);
        map.put('1', 1);
        map.put('2', 2);
        map.put('3', 3);
        map.put('4', 4);
        map.put('5', 5);
        map.put('6', 6);
        map.put('7', 7);
        map.put('8', 8);
        map.put('9', 9);
        map.put('a', 10);
        map.put('b', 11);
        map.put('c', 12);
        map.put('d', 13);
        map.put('e', 14);
        map.put('f', 15);
        return map;
    }
}

说明: