import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a=in.nextLine();
        if(a.charAt(0)=='0'&&a.charAt(1)=='x'){
            int sum=0;
            for(int i=2;i<a.length();i++){
                if(a.charAt(i)<='9'&&a.charAt(i)>='0')
                sum=sum*16+a.charAt(i)-'0';
                else if(a.charAt(i)<='F'&&a.charAt(i)>='A')
                sum=sum*16+a.charAt(i)-'A'+10;
                else System.out.println("error");
            }
        System.out.println(sum);
        }else System.out.println("error");
    }
}

这题也很简单,16进制转化为10进制,给的是字符串类型,先定义字符串

String a=in.nextLine();

然后把16进制的字符从首位挨个*16累加就行了,十六进制数末位有A-F,遇到了直接减去字符A,俩个字符相减是ascll码相减,再+10即可得到16进制数大小

//题目里给的输出都不会有问题,但是实际情况要考虑错误输入

if(a.charAt(0)=='0'&&a.charAt(1)=='x'){//判定给的是不是16进制数

int sum=0 ; //来一个计数的

for(int i=2;i<a.length();i++){ //开始0,1俩个数是0x,所以从2开始,

if(a.charAt(i)<='9'&&a.charAt(i)>='0')

sum=sum*16+a.charAt(i)-'0';

else if(a.charAt(i)<='F'&&a.charAt(i)>='A')

sum=sum*16+a.charAt(i)-'A'+10;

else System.out.println("error");

}

System.out.println(sum);

//最后输出的自然是10进制,如果反过来输出其他进制,就要这个数除以进制数来计算,

//比如460,就是324/16=20......4,4就是末位,然后20>16?,20/16=1....4,倒数第二位就是4,1>16?否,最后输出0x144

//然后把10-15依次对应上A-F

}else System.out.println("error");