题解 | #进制转换#

进制转换

http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

题目

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

这里我采用了一个比较笨的方法,十六进制的字符可以拆成0-9和ABCDEF,对于0-9我采用了正则表达式,对于ABCDEF采用了if判断,并对应的赋数值,这也是字符的范围有限,不然这样写还真不行。

import java.util.*;
import java.io.*;
import java.util.regex.Pattern;
public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String s = input.nextLine();
        int res = 0;
        int count = 0;
        for(int i = s.length()-1;i >= 2;i--){
            Pattern pattern = Pattern.compile("^[0-9]*$");
            char c = s.charAt(i);
            if(c == 'A'){
                res = res + 10*(int) Math.pow(16,count);
                count++;
            }else if(c == 'B'){
                res = res + 11*(int) Math.pow(16,count);
                count++;
            }else if(c == 'C'){
                res = res + 12*(int) Math.pow(16,count);
                count++;
            }else if(c == 'D'){
                res = res + 13*(int) Math.pow(16,count);
                count++;
            }else if(c == 'E'){
                res = res + 14*(int) Math.pow(16,count);
                count++;
            }else if(c == 'F'){
                res = res + 15*(int) Math.pow(16,count);
                count++;
            }else if(pattern.matcher(String.valueOf(c)).matches()){
                int a = Integer.parseInt(String.valueOf(c));
                res = res + a*(int) Math.pow(16,count);
                count++;
            }
        }
        System.out.println(res);
    }
}

alt

全部评论

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
11-09 11:01
济南大学 Java
Java抽象带篮子:外卖项目真得美化一下,可以看看我的详细的外卖话术帖子
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务