基础练习 十六进制转十进制

问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        String a = sc.next();
        int number=0;
        for(int i=0;i<a.length();i++) {
            char x = a.charAt(i);
            int m =zhuanhuan(x);
            number= number+(int)Math.pow(16,a.length()-i-1)*m;
//          System.out.println(x);
        }
        
        System.out.println(number);
        
    }
    public static int zhuanhuan(char a) {
        int number = 0;
        switch(a){
        case '0':
            number=0;
            break;
        case '1':
            number=1;
            break;
        case '2':
            number=2;
            break;
        case '3':
            number=3;
            break;
        case '4':
            number=4;
            break;
        case '5':
            number=5;
            break;
        case '6':
            number=6;
            break;
        case '7':
            number=7;
            break;
        case '8':
            number=8;
            break;
        case '9':
            number=9;
            break;
        case 'A':
            number=10;
            break;
        case 'B':
            number=11;
            break;
        case 'C':
            number=12;
            break;
        case 'D':
            number=13;
            break;
        case 'E':
            number=14;
            break;
        case 'F':
            number=15;
            break;
        default:
            number=0;
            break;                        
        }
        return number;
    }
}


只得了75分 最后一个数据可能超过int范围,将int改成long

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        String a = sc.next();
        long number=0;
        for(int i=0;i<a.length();i++) {
            char x = a.charAt(i);
            int m =zhuanhuan(x);
            number= number+(long)Math.pow(16,a.length()-i-1)*m;
//          System.out.println(x);
        }
        
        System.out.println(number);
        
    }
    public static int zhuanhuan(char a) {
        int number = 0;
        switch(a){
        case '0':
            number=0;
            break;
        case '1':
            number=1;
            break;
        case '2':
            number=2;
            break;
        case '3':
            number=3;
            break;
        case '4':
            number=4;
            break;
        case '5':
            number=5;
            break;
        case '6':
            number=6;
            break;
        case '7':
            number=7;
            break;
        case '8':
            number=8;
            break;
        case '9':
            number=9;
            break;
        case 'A':
            number=10;
            break;
        case 'B':
            number=11;
            break;
        case 'C':
            number=12;
            break;
        case 'D':
            number=13;
            break;
        case 'E':
            number=14;
            break;
        case 'F':
            number=15;
            break;
        default:
            number=0;
            break;                        
        }
        return number;
    }
}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文属xxKarina原创,转载请注明个人博客地址:https://xxkarina.github.io/ 在前面...
    xxKarina阅读 1,287评论 0 4
  • 问题描述给定n个十六进制正整数,输出它们对应的八进制数。 输入格式输入的第一行为一个正整数n (1<=n<=10)...
    可爱得一如既往阅读 794评论 0 0
  • 一、/*回形取数 问题描述回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵...
    逍遥_9353阅读 357评论 0 0
  • 在宜山路这里的财富游戏场。 我和很多认识的大家一起玩。其实我也算玩过几次了,可是还是很像“傻瓜”。 我上来一下子抽...
    马兰_d023阅读 349评论 0 0
  • 追风少年 2018.01.31 苹儿 阅读 40 俩个外孙在家做了三天的寒假作业,终于耐不住寂寞,嚷着要我们带他们...
    绿茵芳菲阅读 340评论 2 8

友情链接更多精彩内容