美文网首页
Java蓝桥杯 基础练习 十六进制转八进制

Java蓝桥杯 基础练习 十六进制转八进制

作者: 雨落失忆之城 | 来源:发表于2022-03-11 20:55 被阅读0次

原题目:
问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式
  输出n行,每行为输入对应的八进制正整数。

题目看起来很简单。
正常情况下直接

public class Main {
    public static void main(String args[]){

        Scanner a = new Scanner(System.in);
        Integer k = a.nextInt();
        String[] st = new String[k];
        for(int i = 0;i<k;i++){
            st[i] = a.next();
        }
        for(int j = 0;j<k;j++){
            System.out.println(Integer.toString(Integer.parseInt(st[j],16),8));
        }
    }
}

但是发现该答案无法通过。


image.png

原因如下图:


image.png
这输入一个比一个大。最后都要爆表了。无法用十进制的整型和integer类去做中间转换。
如果想着手动用字符串拼接是非常麻烦且不必要的。

正确方法是用大数据类型BigInteger处理

class lqMain{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        String[] str = new String[k];
        for(int i = 0;i<k;i++){
            str[i] = sc.next();
        }
        for(int j = 0;j<k;j++){
            System.out.println(new BigInteger(str[j],16).toString(8));
        }
    }
}

代码正常通过。


image.png

相关文章

网友评论

      本文标题:Java蓝桥杯 基础练习 十六进制转八进制

      本文链接:https://www.haomeiwen.com/subject/bdehdrtx.html