/*问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535*/
源代码:
import java.util.Scanner; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s=sc.nextLine(); //获取输入的字符串 char c[]=s.toCharArray(); //将字符串对象中的字符转换为一个字符数组 int n=c.length; long sum=0; for(int i=0;i<n;i++){ if((int)c[i]-48>9){ if(c[i]=='A') sum+=10*Math.pow(16,n-i-1); else if(c[i]=='B') sum+=11*Math.pow(16,n-i-1); else if(c[i]=='C') sum+=12*Math.pow(16,n-i-1); else if(c[i]=='D') sum+=13*Math.pow(16,n-i-1); else if(c[i]=='E') sum+=14*Math.pow(16,n-i-1); else if(c[i]=='F') sum+=15*Math.pow(16,n-i-1); } else{ sum+=((int)c[i]-48)*Math.pow(16,n-i-1); } } System.out.println(sum); } }