赞
踩
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入
FFFF
样例输出
65535
建立一个char类型arr数组负责记录每个键入值,
新建一个int类型arr2数组存储转换后每位对应值。
再通过算法,计算即可!
例如:2AF5换算成10进制:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 =15*16^1= 240
第2位: A * 16^2= 10* 16^2=2560
第3位: 2 * 16^3 = 8192
结果就是:5 * 16^0 + 15 * 16^1 + 10 * 16^2 + 2 * 16^3 = 10997
保存所有值的数据类型不可为int类型,如果输入的是FFFFFFFF会超出int范围!
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String num = sc.next(); char[]arr = num.toCharArray(); int[] arr2 = new int[arr.length]; for (int i=0;i<arr.length;i++) { switch (arr[i]) { case 'A': arr2[i] = 10; break; case 'B': arr2[i] = 11; break; case 'C': arr2[i] = 12; break; case 'D': arr2[i] = 13; break; case 'E': arr2[i] = 14; break; case 'F': arr2[i] = 15; break; default: arr2[i] =arr[i]-48; break; } } long sum = 0 ; for (int i = arr2.length-1; i >=0; i--) { double k = Math.pow(16,arr2.length-i-1); sum+=(arr2[i]*k); } System.out.println(sum); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。