【java华为机试】HJ5 进制转换

编程入门 行业动态 更新时间:2024-10-19 15:30:37

【java<a href=https://www.elefans.com/category/jswz/34/1769368.html style=华为机试】HJ5 进制转换"/>

【java华为机试】HJ5 进制转换

描述

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

数据范围:保证结果在 1 \le n \le 2^{31}-1 \1≤n≤231−1 

注意本题有多组输入

输入描述:

输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子牛客网在线判题系统使用帮助_站内公告_牛客网处理多组输入的问题。

输出描述:

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

import java.util.Scanner;
import java.lang.Math;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNextLine()) {String str = in.nextLine();strToNum(str);}}public static void strToNum(String s) {// 设置一个数组,将16进制转换后的值存放在里面。数组从左到右,相当于位数从高到底。int[] nc = new int[s.length() - 2];// 将待求值的字符串转换成char的类型的数字,用于后面的遍历,遍历先将16进制转换成10进制的值,之后在进行按为计算求和,求出最终的16进制对应的10进制结果。char[] arr = s.toCharArray();// 第一次遍历,遍历开始的0x先去掉,从第三位开始遍历。for (int tc = 0; tc < s.length() - 2; tc++) {// 判断16进制是数字还是字母,将每一位的值都转换成10进制的值。if (arr[tc + 2] >= '0' && arr[tc + 2] <= '9') {nc[tc] = arr[tc + 2] - '0';} else if (arr[tc + 2] >= 'A' && arr[tc + 2] <= 'Z') {nc[tc] = arr[tc + 2] - 'A' + 10;} else if (arr[tc + 2] >= 'a' && arr[tc + 2] <= 'z') {nc[tc] = arr[tc + 2] - 'a' + 10;}}// 以上计算已经将16进制按位转换成10进制了。接下来就是求最后的结果。设置一个count变量,用于最后的统计求和。int count = 0;// 对nc数组的值进行遍历,求出最终的结果。for (int i = 0; i < nc.length; i++) {// 将第i位的值放置在临时变量countTmp中。int countTmp = nc[i];// 如果第i位的index在大于1的位置(除个位以外的高位),需要遍历index-1次,并且乘 16。for (int j = 0; j < nc.length - i - 1; j++) {countTmp = countTmp * 16;}count += countTmp;}System.out.println(count);}
}

输入:

0xA
0xAA

输出:

10
170

更多推荐

【java华为机试】HJ5 进制转换

本文发布于:2023-07-28 21:53:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1329766.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:华为   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!