华为OD机试真题B卷 Java 实现【进制转换】,附详细解题思路-LMLPHP

一、题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

二、输入描述

输入一个十六进制的数值字符串。

三、输出描述

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

四、解题思路

  1. 读取输入的十六进制数值字符串;
  2. 创建一个变量 count,用于记录十进制数的结果;
  3. 遍历十六进制数值字符串的字符,从第三位开始(去除前面的"0x");
  4. 对于每个字符,判断其是数字还是字母,并将其转换为对应的数值;
  5. 使用公式 count += t * Math.pow(16, s.length() - i - 3) 将每个字符对应的数值乘以相应的权值,并累加到 count 中;
  6. 输出 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机试真题B卷 Java 实现【进制转换】,附详细解题思路-LMLPHP

🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

华为OD机试真题B卷 Java 实现【进制转换】,附详细解题思路-LMLPHP

06-08 18:29