题目回顾
十六进制与十进制的转换,输入一个十六进制字符串,转换成十进制数输出。
解题思路
需要思路么?大概不需要,遍历字符串,把字符0~9的当做一类处理,字符A ~ F的当做一类处理,转成整数后按照转换规则对每一位进行指数、乘法操作并累加就好啦。
代码(Java)
import java.util.Scanner;
/**
* @author : flower48237
* @version: 2020年3月11日 下午9:12:13
* @note : OX to Ten
*/
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
String str = in.nextLine();
//用long定义sum是为了防止溢出
long sum = 0;
int len = str.length();
for (int i = 0; i < len; i++) {
char ch = str.charAt(i);
int chval = (int)ch;
if(chval - 48 > 9){
if(str.charAt(i) == 'a')
sum += 10 * Math.pow(16,len-i-1);
else if(ch == 'b')
sum += 11*Math.pow(16,len-i-1);
else if(ch == 'c')
sum += 12*Math.pow(16,len-i-1);
else if(ch == 'd')
sum += 13*Math.pow(16,len-i-1);
else if(ch == 'e')
sum += 14*Math.pow(16,len-i-1);
else if(ch == 'f')
sum += 15*Math.pow(16,len-i-1);
}
else{
sum+=(chval - 48) * Math.pow(16,len-i-1);
}
}
System.out.print(sum);
}
}
联通软件研究院笔试编程题之一,感觉考的很重视基础。
本文作者:
whtli
本文链接: https://hexo.whtli.cn/archives/5071d281.html
版权声明: 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
本文链接: https://hexo.whtli.cn/archives/5071d281.html
版权声明: 遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。