题解 | #进制转换#

进制转换

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

import java.util.*;
public class Main{
    /*public static void main(String [] args){
        //Java包装类Integer自带的方法
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.next();
            String str=s.substring(2);
            System.out.println(Integer.parseInt(str,16));
        } 
    }*/
    /*===========================================*/
    //Map集合
    /*private final static int BASE=16;
    private static Map<Character,Integer> map=new HashMap<Character,Integer>()
    {{
        put('0',0);
        put('1',1);
        put('2',2);
        put('3',3);
        put('4',4);
        put('5',5);
        put('6',6);
        put('7',7);
        put('8',8);
        put('9',9);
        put('A',10);
        put('B',11);
        put('C',12);
        put('D',13);
        put('E',14);
        put('F',15);
    }};
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.nextLine();
            String str=s.substring(2);
            char[] ch=str.toCharArray();
            int target=0;
            for(int i=0;i<ch.length;i++){
                target=target*BASE+map.get(ch[i]);
            }
            System.out.println(target);
        }
    }*/
    /*=================================================*/
    /*private final static int BASE=16;
    public static Map<Character,Integer> map=new HashMap<Character,Integer>();
    static{
        map.put('0',0);
        map.put('1',1);
        map.put('2',2);
        map.put('3',3);
        map.put('4',4);
        map.put('5',5);
        map.put('6',6);
        map.put('7',7);
        map.put('8',8);
        map.put('9',9);
        map.put('A',10);
        map.put('B',11);
        map.put('C',12);
        map.put('D',13);
        map.put('E',14);
        map.put('F',15);
    }
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.nextLine();
            int res=getDecimalValue(s);
            System.out.println(res);
        }
    }
    public static int getDecimalValue(String s){
        if(s==null){
            return 0;
        }
        if(s.startsWith("0x")){
            s=s.substring(2);
        }
        char[] ch=s.toUpperCase().toCharArray();
        int target=0;
        for(int i=0;i<ch.length;i++){
            target=target*BASE+map.get(ch[i]);
        }
        return target;
    }
    public static int getDecimalValue2(String s){
        if(s==null){
            return 0;
        }
        if(s.startsWith("0x")){
            s=s.substring(2);
        }
        return Integer.parseInt(s,16);
    }*/
    /*========================================================*/
    /*public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.nextLine();
            if(s.startsWith("0x")){
                s=s.substring(2);
            }
            int target=0;
            for(int i=0;i<s.length();i++){
                char ch=s.charAt(i);
                int num=0;
                if(ch>='0' && ch<='9'){
                    num=ch-'0';
                }else if(ch>='A'&&ch<='F'){
                    num=ch-'A'+10;
                }else if(ch>='a'&&ch<='f'){
                    num=ch-'a'+10;
                }
                target+=num*Math.pow(16,s.length()-i-1);
            }
            System.out.println(target);
        }
    }*/
    
    /*=======================================================*/
    /*public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.nextLine();
            int res=new Main().hexToTen(s);
            System.out.println(res);
        }
    }
    public static int hexToTen(String s){
        if(s.startsWith("0x")){
            s=s.substring(2);
        }
        String str="0123456789ABCDEF";
        char [] ch=s.toCharArray();
        int target=0;
        for(int i=0;i<ch.length;i++){
            int index=str.indexOf(ch[i]);
            target+=index*Math.pow(16,s.length()-i-1);
        }
        return target;
    }*/
    /*==============================================*/
    
    /*public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.nextLine().toUpperCase();
            int target=0;
            int r=1;
            while(!"0X".equals(s)){
                String str=s.substring(s.length()-1);
                switch(str){
                    case "A":
                        target+=10*r;
                        break;
                    case "B":
                        target+=11*r;
                        break;
                    case "C":
                        target+=12*r;
                        break;
                    case "D":
                        target+=13*r;
                        break;
                    case "E":
                        target+=14*r;
                        break;
                    case "F":
                        target+=15*r;
                        break;
                    default:
                        target+=Integer.parseInt(str)*r;
                        break;
                }
                s=s.substring(0,s.length()-1);
                r=r*16;//幂指数,从末尾往前循环,循环一次乘以16,循环2次乘以16的平方
            }
            System.out.println(target);
        }
    }*/
    
    /*======================================================*/
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.nextLine();
            if(s.startsWith("0x")){
                s=s.substring(2);
            }
            char[] ch=s.toCharArray();
            int target=0;
            int len=ch.length;
            for(int i=0;i<len;i++){
                if(ch[i]-48>9){
                    if(ch[i]=='A'){
                        target+=10*Math.pow(16,len-i-1);
                    }else if(ch[i]=='B'){
                        target+=11*Math.pow(16,len-i-1);
                    }else if(ch[i]=='C'){
                        target+=12*Math.pow(16,len-i-1);
                    }else if(ch[i]=='D'){
                        target+=13*Math.pow(16,len-i-1);
                    }else if(ch[i]=='E'){
                        target+=14*Math.pow(16,len-i-1);
                    }else if(ch[i]=='F'){
                        target+=15*Math.pow(16,len-i-1);
                    }
                }else{
                    target+=(ch[i]-48)*Math.pow(16,len-i-1);
                }
            }
            System.out.println(target);
        }
    }
}
全部评论

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务