问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
**解题思路:十六进制转十进制的·转换方法为,每一位*16的n次方即:
第一位:sum=i*16^0;
第二位:sum=i*16^1;
……….以此类推
平方运用数学方法math.pow()实现,将特殊情况单独写出,就可解题。
**
import java.util.*;
public class ShiLiutoShi {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String s=sc.next();
long a=0;
int b=0;
for(int i=s.length()-1;i>=0;i--) {//这里注意charat是从0开始的。所以需要减一
if(s.charAt(i)=='A') //单独计算ABCDEF的情况
a+=10*Math.pow(16, b);
else if(s.charAt(i)=='B')
a+=11*Math.pow(16, b);//这里调用的数学方法计算16的n次方
else if(s.charAt(i)=='C')
a+=12*Math.pow(16, b);
else if(s.charAt(i)=='D')
a+=13*Math.pow(16, b);
else if(s.charAt(i)=='E')
a+=14*Math.pow(16, b);
else if(s.charAt(i)=='F')
a+=15*Math.pow(16, b);
else
a+=((s.charAt(i)-'0')*Math.pow(16, b));
b++;
}
System.out.println(a);
}
}