一、题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
二、输入描述
输入一个十六进制的数值字符串。
三、输出描述
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
四、解题思路
- 读取输入的十六进制数值字符串;
- 创建一个变量 count,用于记录十进制数的结果;
- 遍历十六进制数值字符串的字符,从第三位开始(去除前面的"0x");
- 对于每个字符,判断其是数字还是字母,并将其转换为对应的数值;
- 使用公式 count += t * Math.pow(16, s.length() - i - 3) 将每个字符对应的数值乘以相应的权值,并累加到 count 中;
- 输出 count,即转换后的十进制数。
五、Java算法源码
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String s = in.nextLine();
int count = 0;
for (int i = 0; i < s.length() - 2; i++) {
//由于前面两位是'0x',故从第三位开始
char tc = s.charAt(i + 2);
int t = 0; //记录字母转换成的数值
//将字母转换为数值
if (tc >= '0' && tc <= '9')
t = tc - '0';
//字母'A'/'a'~'F''f'对应数字10~15
else if (tc >= 'A' && tc <= 'F')
t = tc - 'A' + 10;
else if (tc >= 'a' && tc <= 'f')
t = tc - 'a' + 10;
//计算加和
count += t * Math.pow(16, s.length() - i - 3);
}
System.out.println(count);
}
}
六、效果展示
🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路
🏆本文收录于,华为OD机试(JAVA)(2022&2023)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。