題目回顧
十六進制與十進制的轉換,輸入一個十六進制字符串,轉換成十進制數輸出。
解題思路
需要思路麼?大概不需要,遍歷字符串,把字符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);
}
}
聯通軟件研究院筆試編程題之一,感覺考的很重視基礎。