题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
1 import java.util.Scanner; 2 3 4 public class Convert { 5 6 /**16进制转为10进制 7 * @param args 8 */ 9 public static void main(String[] args) { 10 Scanner sc = new Scanner(System.in); 11 while(sc.hasNext()){ 12 String s1 = sc.next(); 13 String s2 = s1.substring(2, s1.length()); 14 //System.out.println(s2); 15 convert(s2); 16 } 17 } 18 19 public static void convert(String s){ 20 double sum=0; 21 int len = s.length(); 22 double[] arr = new double[len]; 23 for(int i=len-1;i>=0;i--){ 24 int j=len-i-1; 25 switch (s.charAt(i)) { 26 case '0': 27 arr[j]=0; 28 break; 29 case '1': 30 arr[j]=1*Math.pow(16, j); 31 break; 32 case '2': 33 arr[j]=2*Math.pow(16, j); 34 break; 35 case '3': 36 arr[j]=3*Math.pow(16, j); 37 break; 38 case '4': 39 arr[j]=4*Math.pow(16, j); 40 break; 41 case '5': 42 arr[j]=5*Math.pow(16, j); 43 break; 44 case '6': 45 arr[j]=6*Math.pow(16, j); 46 break; 47 case '7': 48 arr[j]=7*Math.pow(16, j); 49 break; 50 case '8': 51 arr[j]=8*Math.pow(16, j); 52 break; 53 case '9': 54 arr[j]=9*Math.pow(16, j); 55 break; 56 case 'A': 57 arr[j]=10*Math.pow(16, j); 58 break; 59 case 'B': 60 arr[j]=11*Math.pow(16, j); 61 break; 62 case 'C': 63 arr[j]=12*Math.pow(16, j); 64 break; 65 case 'D': 66 arr[j]=13*Math.pow(16, j); 67 break; 68 case 'E': 69 arr[j]=14*Math.pow(16, j); 70 break; 71 case 'F': 72 arr[j]=15*Math.pow(16, j); 73 break; 74 default: 75 break; 76 } 77 sum = sum+arr[j]; 78 } 79 System.out.println((int)sum); 80 } 81 82 }
代码2:没想到,参考别人,用java不要太简单
1 import java.util.*; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc=new Scanner(System.in); 6 while (sc.hasNext()){ 7 String str=sc.next().substring(2); 8 System.out.println(Integer.parseInt(str,16)); 9 } 10 } 11 }
代码3:和代码一思想略同,但要简略些
1 import java.util.*; 2 3 public class Test { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 while (sc.hasNext()) { 7 StringBuffer sb = new StringBuffer(); 8 sb.append(sc.next()); 9 String str = sb.reverse().substring(0, sb.length() - 2); 10 char ch[] = str.toCharArray(); 11 int sum = 0; 12 for (int i = 0; i < ch.length; i++) { 13 if (ch[i] >= 'A' && ch[i] <= 'F') { 14 sum += ((ch[i]) - 55) * Math.pow(16, i); 15 } else { 16 sum += ((ch[i]) - 48) * Math.pow(16, i); 17 } 18 } 19 System.out.println(sum); 20 } 21 } 22 }