题解 | #进制转换#

进制转换

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 num = in.nextLine();
        char[] chars = num.toCharArray();
        char[] nums = new char[num.length() - 2];
        for (int i = 2, j = 0; i < chars.length && j < nums.length; i++, j++) {
            nums[j] = chars[i];
        }

        int a = 0, sum = 0, m = 0;
        for (int length = nums.length - 1; length >= 0; length--) {
            char numc = nums[length];
            switch (numc) {
                case 'A':
                    a = 10;
                    break;
                case 'B':
                    a = 11;
                    break;
                case 'C':
                    a = 12;
                    break;
                case 'D':
                    a = 13;
                    break;
                case 'E':
                    a = 14;
                    break;
                case 'F':
                    a = 15;
                    break;
                case '0':
                    a = 0;
                    break;
                case '1':
                        a = 1;
                    break;
                case '2':
                    a = 2;
                    break;
                case '3':
                    a = 3;
                    break;
                case '4':
                    a = 4;
                    break;
                case '5':
                    a = 5;
                    break;
                case '6':
                    a = 6;
                    break;
                case '7':
                    a = 7;
                    break;
                case '8':
                    a = 8;
                    break;
                case '9':
                    a = 9;
                    break;
            }
            if (m == 0) {
                sum += a;
            } else {
			  // 16的幂次方
                for (int i = 1; i <= m; i++) {
                    a *= 16;
                }
                sum += a;
            }
            m++;
        }
        System.out.println(sum);
    }
}

比较笨的方法,但是比较好理解

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务