题解 | #进制转换#

进制转换

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String hexa = in.nextLine().toLowerCase();
        int count = hexa.length();
        int sum = 0;
        int i = 0;
        int base = 0;
        while(count > 2){
            i = count - 1;
            switch(hexa.charAt(i)){
                case '1': 
                sum += 1 * pow(16, hexa.length() -1 - i);
                break;
                case '2':
                sum += 2 * pow(16, hexa.length() -1 - i);
                break;
                case '3':
                sum += 3 * pow(16, hexa.length() -1 - i);
                break;
                case '4':
                sum += 4 * pow(16, hexa.length() -1 - i);
                break;
                case '5':
                sum += 5 * pow(16, hexa.length() -1 - i);
                break;
                case '6':
                sum += 6 * pow(16, hexa.length() -1 - i);
                break;
                case '7':
                sum += 7 * pow(16, hexa.length() -1 - i);
                break;
                case '8':
                sum += 8 * pow(16, hexa.length() -1 - i);
                break;
                case '9':
                sum += 9 * pow(16, hexa.length() -1 - i);
                break;
                case 'a':
                sum += 10 * pow(16, hexa.length() -1 - i);
                break;
                case 'b':
                sum += 11 * pow(16, hexa.length() -1 - i);
                break;
                case 'c':
                sum += 12 * pow(16, hexa.length() -1 - i);
                break;
                case 'd':
                sum += 13 * pow(16, hexa.length() -1 - i);
                break;
                case 'e':
                sum += 14 * pow(16, hexa.length() -1 - i);
                break;
                case 'f':
                sum += 15 * pow(16, hexa.length() -1 - i);
                break;
            }
            count--;
            base *= 16;
        }
        System.out.println(sum);
    }
    public static int pow(int base, int exponent){
        int sum = 1;
        if(exponent == 0){
            return 1;
        }else{
            while(exponent > 0){
                sum *= base;
                exponent--;
            }
            return sum;
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务