蓝桥杯练习题之十六进制转十进制
来源:互联网 发布:现在在淘宝做动漫周边 编辑:程序博客网 时间:2024/06/04 19:35
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
这道题博主我改了三次终于通过了测试...
讲真,这道题并不难,只是前两次代码测试总是拿不到满分,也就是说运行内存处理不当
先放上我前两次的代码吧
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);String str = input.nextLine();int out = tran(str);System.out.println(out);input.close();}public static int tran(String str) {int len = str.length();int[] a = new int[len];int dec = 0;for (int i = len - 1; i >= 0; i--) {a[i] = str.charAt(i);switch (a[i]) {case 'A':a[i] = 10;break;case 'B':a[i] = 11;break;case 'C':a[i] = 12;break;case 'D':a[i] = 13;break;case 'E':a[i] = 14;break;case 'F':a[i] = 15;break;default:a[i] = a[i] - '0';}int temp = 1;for (int j = len; j > len - i; j--) {temp *= 16;}dec += temp * a[i];}return dec;}}第一次的代码我只得了25分,经检查,是内存消耗过大,同时也没进行大数处理,第二次我按照锦囊二的提示按数位依次操作,每次将前面的乘16,再加上当前数位的值对dec进行运算,然而当时并没有对dec进行大数处理,于是乎,测试以75分收场...
public static int tran(String str) {int len = str.length();int[] a = new int[len];int[] dec = new int[len];int[] num = new int[len];int k = 0;dec[0] = 0; for (int i = len - 1; i >= 0; i--) {a[i] = str.charAt(i);switch (a[i]) {case 'A':a[i] = 10;break;case 'B':a[i] = 11;break;case 'C':a[i] = 12;break;case 'D':a[i] = 13;break;case 'E':a[i] = 14;break;case 'F':a[i] = 15;break;default:a[i] = a[i] - '0';}if (len - 1 == i) {num[k] = 1;dec[k] = a[i] * num[k];} else {num[k] = num[k - 1] * 16; dec[k] = a[i] * num[k] + dec[k - 1];}k++;}return dec[k - 1];}}
修改了变量类型后,代码终于满分通过了测试...
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);String str = input.nextLine();long out = tran(str);System.out.println(out);input.close();}public static long tran(String str) {int len = str.length();int[] a = new int[len];long[] dec = new long[len];long[] num = new long[len];int k = 0;dec[0] = 0; for (int i = len - 1; i >= 0; i--) {a[i] = str.charAt(i);switch (a[i]) {case 'A':a[i] = 10;break;case 'B':a[i] = 11;break;case 'C':a[i] = 12;break;case 'D':a[i] = 13;break;case 'E':a[i] = 14;break;case 'F':a[i] = 15;break;default:a[i] = a[i] - '0';}if (len - 1 == i) {num[k] = 1;dec[k] = a[i] * num[k];} else {num[k] = num[k - 1] * 16; dec[k] = a[i] * num[k] + dec[k - 1];}k++;}return dec[k - 1];}}
喜欢就请关注我,你们的关注是我最大的动力~
查阅相关代码请点击:https://github.com/striner/javaCode/blob/master/hexadecimalToDecimal
阅读全文
0 0
- 蓝桥杯练习题之十六进制转十进制
- 蓝桥杯练习题之十进制转十六进制
- 蓝桥杯之基础练习 十六进制转十进制
- 蓝桥杯练习题之十六进制转八进制
- 蓝桥杯 十进制转十六进制
- 蓝桥杯-十进制转十六进制
- 蓝桥杯-十六进制转十进制
- 蓝桥杯十进制转十六进制
- 蓝桥杯十六进制转十进制
- 蓝桥杯-十进制转十六进制
- 蓝桥杯-十六进制转十进制
- 蓝桥杯 十六进制转八进制十六进制转十进制 十进制转十六进制
- 蓝桥杯--十六进制转十进制&十进制转十六进制&十六进制转八进制
- JAVA 十进制转十六进制(蓝桥杯
- 蓝桥杯 十六进制转十进制(字符串)
- 蓝桥杯JAVA 十六进制转十进制
- 蓝桥杯JAVA 十进制转十六进制
- 2016蓝桥杯假期任务之《十六进制转十进制》
- 自定义view进度条案例
- 【备忘】2017年最新springboot开发校园商铺平台视频教程
- 火狐访问所有HTTPS网站显示连接不安全
- pip安装mysql-python报mysql_config: not found错
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++十、Openstack对象存储服务(swift)下
- 蓝桥杯练习题之十六进制转十进制
- 在Android中使用MD5
- 基于zookeeper实现分布式锁
- 使用truelicense实现用于JAVA工程license机制(包括license生成和验证)
- 688. Knight Probability in Chessboard
- 正则表达式校验工具类
- ABAP Web dynpro ALV report table
- Android多次加载bitmap后,提示内存溢出。可以在onDestroy中释放内存资源
- 最简单的 Git 入门教程(一)