题解 | #进制转换#

进制转换

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

就注意两点:

1.去掉字符串里的‘0x’之后对乘幂的使用

2.注意char 0~9参与运算要把它转成int,强制转换会转成char对应的ascII码,而不是对应的数字值

用Character.getNumericValue();函数来进行转换。

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String shiliu = in.next();
        int len = shiliu.length();
        //System.out.println("len: "+len);
        char[] arr = shiliu.toCharArray();
        int res = 0;//shi jin zhi shu
        int temp = 0; 
        for(int i=2;i<len;i++){
            switch(arr[i]){
                case 'A': 
                    res += 10*Math.pow(16,(len-i-1));
                    break;

                case 'B': 
                    res += 11*Math.pow(16,(len-i-1));
                    break;
                case 'C': 
                    res += 12*Math.pow(16,(len-i-1));
                    break;
                case 'D': 
                    res += 13*Math.pow(16,(len-i-1));
                    break;
                case 'E': 
                    res += 14*Math.pow(16,(len-i-1));
                    break;
                case 'F': 
                    res += 15*Math.pow(16,(len-i-1));
                    break;
                default:
                    temp = Character.getNumericValue(arr[i]);
                    res += temp*Math.pow(16,(len-i-1));

            }
            //System.out.println(arr[i]);
            //System.out.println("(int)arr[i] "+(int)arr[i]);
            //这样强制转换是char '2' 转成int 输出的是他的ascII码67
            //System.out.println("第"+(i-1)+"次"+res);

        }
        
        System.out.print(res);

    }
}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务