005进制转换

题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

示例1

输入

0xA

输出

10

我的解答

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        String s = "";
        String target = "";
        while (input.hasNextLine()) {
            //获取输入 并转换成大写
            s = input.nextLine().toUpperCase();
            //去掉前面的0X
            target = s.substring(2);
            //分割成一个字符 4396变成{4,3,9,6}
            String[] targetsplit = target.split("", target.length());
            //进制转换结果
            double result = 0;
            for (int i = 0; i < targetsplit.length; i++) {
                int j = 0;
                //targetsplit[targetsplit.length - i - 1]从后往前取
                //switch case 遇到ABCDEF转换对应数字 否则直接转换
                switch (targetsplit[targetsplit.length - i - 1]) {
                    case "A":
                        j = 10;
                        break;
                    case "B":
                        j = 11;
                        break;
                    case "C":
                        j = 12;
                        break;
                    case "D":
                        j = 13;
                        break;
                    case "E":
                        j = 14;
                        break;
                    case "F":
                        j = 15;
                        break;
                    default:
                        j = Integer.parseInt(targetsplit[targetsplit.length - i - 1]);
                        break;
                }
                //pow(16,i) 16的i次方 i从0开始 double类型
                result = result + j * Math.pow(16, i);
            }
            //int 4396 double 4396.0  
            System.out.println((int)result);
        }
    }
}
//另一个处理方法 字符的ascii码
//if (ch >= '0' && ch <= '9') {
//    j = ch - '0';
//} else if (ch >= 'A' && ch <= 'Z') {
//    j = ch - 'A' + 10;
//}


import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        String s = "";
        String target = "";
        while (input.hasNextLine()) {
            s = input.nextLine().toUpperCase();
//去掉0X
            target = s.substring(2);
//Long.parseLong(target, 16);把16进制的目标转换成10进制
            long result= Long.parseLong(target, 16);
            System.out.println(result);
        }
    }
}

posted @ 2020-06-07 13:57  smsmdmx  阅读(274)  评论(0)    收藏  举报