美文网首页
基础练习 十六进制转十进制

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

作者: 就这样吧嘞 | 来源:发表于2019-02-23 17:29 被阅读0次

问题描述
  从键盘输入一个不超过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;
    }
}


相关文章

网友评论

      本文标题:基础练习 十六进制转十进制

      本文链接:https://www.haomeiwen.com/subject/iwvpyqtx.html