赞
踩
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。【蓝桥杯】
解法:
十六进制转十进制,给十六进制每一位乘16的位数减一次,即可得到相对应的十进制数,特别注意:不能使用int类型,要使用long类型来防止数值溢出。
代码如下:
- import java.util.Scanner;
-
- public class Main03 {
- public static void main(String[] args){
- Scanner input=new Scanner(System.in);
- String hex=input.next();
- Long pow=1L;//使用long类型防止溢出
- long dec=0L;
- for(int i=hex.length()-1;i>=0;i--) {//从尾部开始遍历,即从最低位开始遍历
- char c=hex.charAt(i);
- if(Character.isLetter(c)) {//如果当前字符是字母,和“A”相减拿到超出10的部分再加上10
- dec+=(c-'A'+10)*pow;
- }else {
- dec+=(c-'0')*pow;
- }
- pow*=16;//每次遍历一位数,乘16的次方也要加一
- }
- System.out.println(dec);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。