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");