【JAVA蓝桥杯】基础练习2 十六进制转十进制

资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
JAVA答案如下代码
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        BigInteger bi = null;
        String enter = null;
        enter = input.next();
        bi = new BigInteger(enter, 16);
        String show = bi.toString(10);
        System.out.println(show);
    }
}

疑难解答:1.BigInteger是存储非常大的数据类型,题目中已经给出了最长为8位的字符串,而Integer的数据类型最多也只能存储8位,我们防止数据溢出一般采用BigInteger类型。

2.给bi和enter赋值null与不赋值是有区别的,给bi和enter赋值null的目的是完成了初始化。(总之,一个局部对象使用之前肯定要先赋值,但不管你在什么时候赋值。所以,无论是成员变量还是局部变量,声明的时候不赋值只声明当然是可以的。)

3.bi = new BigInteger(enter,16);这行代码的含义是将enter这一个字符串转化为16进制的数,如果不带进制就是默认10进制。

4.在这里toString(10);的含义就是把输出的数转换为十进制,当然还可以是其他进制。至于toSring的其他用法以后我会专门写一个随笔,先介绍在这里的用法吧。

原文地址:https://www.cnblogs.com/chenxi1944362410/p/12283768.html