华为在线编程题系列-5-进制转换


问题描述:

问题描述

1. 问题涉及知识点.

  • 字符串遍历.

2. 自己解法.

  • 先做一个hasNext()的无限循环.
  • 取一个输入’0xA’,通过split获取substring的方式取x之后的字符串.
  • 遍历新的字符串.通过16的i次方的方式累加.
package com.chaoxiong.niuke.huawei;
import java.util.Scanner;
public class HuaWei_5 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String in = scanner.nextLine();
            String []tmp = in.split("x");
            String key = tmp[tmp.length-1];
            int result = Convert(key);
            System.out.println(result);
        }
    }
    private static int Convert(String key) {
        char []charArr = key.toCharArray();
        int result = 0;
        for(int i=0;i<charArr.length;i++){
            result = (int) (result+char2Int(charArr[i])*(Math.pow(16,charArr.length-1-i)));
        }
        return result;
    }
    private static int char2Int(char c) {
        switch (c){
            case '0':
                return 0;
            case '1':
                return 1;
            case '2':
                return 2;
            case '3':
                return 3;
            case '4':
                return 4;
            case '5':
                return 5;
            case '6':
                return 6;
            case '7':
                return 7;
            case '8':
                return 8;
            case '9':
                return 9;
            case 'A':
                return 10;
            case 'B':
                return 11;
            case 'C':
                return 12;
            case 'D':
                return 13;
            case 'E':
                return 14;
            case 'F':
                return 15;
            default:
                return 0;
        }
    }
}

3. 优质答案.

优化方法
1:不用split切分,而是通过substring(2)直接取第二个之后的字符串.

4. 本题总结.

猜你喜欢

转载自blog.csdn.net/u012222078/article/details/80197238