华为OD机试“HJ5 进制转换”Java编程解答

描述

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

数据范围:保证结果在 1≤n≤231−1

输入描述:

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

输出描述:

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

示例1

输入:

复制代码
0xAA

复制输出:

复制代码
170

答案1

java 复制代码
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input=in.nextLine();
        int num = 0;
        int j=0;
        for(int i=input.length()-1;i>1;i--){
            if((int)input.charAt(i)>=65)
                num+=((int)input.charAt(i)-55)*Math.pow(16,j++);
            else
                num+=((int)input.charAt(i)-48)*Math.pow(16,j++);
        }
       System.out.println(num);
    }
}

详解1

十六进制转换为十进制方法

  1. 将十六进制数的每个数字与对应的权重相乘。

    例如,对于十六进制数1A3F,分别将1A3F与权重相乘。

  2. 将这些乘积相加。

  3. 注意权重的变化。

从右到左,权重依次为16的0次方、16的1次方、16的2次方,以此类推。

本方法有点投机,是已知字符ASCII码而且需要传入的字母全是大写情况下的做法

Math.pow(x,n)函数

在 Java 中,要计算一个数的几次方,您可以使用 Math.pow() 函数。这个函数接受两个参数,第一个参数是底数,第二个参数是指数。它会返回底数的指数次幂的结果。

例如,要计算 xn 次方,可以使用以下方式:

java 复制代码
double result = Math.pow(x, n);

这将返回 xn 次方的结果。请注意,Math.pow() 返回一个 double 类型的结果,如果需要将其转换为整数,可以使用强制类型转换或者其他适当的方式进行处理。

答案2

java 复制代码
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String hexString = scanner.next();
            // 去除十六进制字符串的前缀(如果有)
            if (hexString.startsWith("0x") || hexString.startsWith("0X")) {
                hexString = hexString.substring(2);
            }
            // 将十六进制字符串转换为十进制数值
            int decimalValue = Integer.parseInt(hexString, 16);
            // 输出十进制数值
            System.out.println(decimalValue);
        }
        scanner.close();
    }
}

详解2

hexString.startsWith()函数用法

hexString.startsWith("0x") 是 Java 字符串的一个方法调用。它用于检查字符串 hexString 是否以指定的前缀 "0x" 开头。如果是,它将返回 true,否则返回 false

Integer.parseInt()函数用法

Integer.parseInt() 是 Java 中的一个静态方法,用于将字符串解析为整数类型。它的作用是将给定的字符串表示的数字转换为整数值。

这个方法有两种重载形式:

  1. parseInt(String s): 接受一个字符串参数,将其解析为十进制的整数。
  2. parseInt(String s, int radix): 接受两个参数,第一个参数是要解析的字符串,第二个参数是解析时使用的基数(进制)。可以指定 2 到 36 之间的值作为基数,表示解析时使用的进制,如 2 表示二进制,8 表示八进制,16 表示十六进制。

在我们的例子中,我们使用 parseInt(String s, int radix) 方法的第二种形式,将十六进制字符串转换为十进制整数。我们使用基数参数设置为 16,表示解析时使用十六进制。这样,十六进制字符串中的字符会被解析为对应的十进制数值。

相关推荐
路在脚下@23 分钟前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
森屿Serien26 分钟前
Spring Boot常用注解
java·spring boot·后端
轻口味1 小时前
命名空间与模块化概述
开发语言·前端·javascript
苹果醋32 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
晓纪同学2 小时前
QT-简单视觉框架代码
开发语言·qt
威桑2 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
Hello.Reader2 小时前
深入解析 Apache APISIX
java·apache
飞飞-躺着更舒服2 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb