进制转换

题目:

 

 

 

思路:

首先我们要确定进行转换的数的可能性为三种,即负数,正数与0;
      其次十进制以上的转化情况。例:11进制中,10用A表示,
然后最后考虑到的是获取进制数的顺序

代码示例:

import java.util.Stack;
 
public class Solution4 {
    public static void main(String[] args) {
        int M = 7, N = 2;
        System.out.println(solve(M, N));
    }
 
    /**
     * 进制转换
     * 原理:
     * 首先我们要确定进行转换的数的可能性为三种,即负数,正数与0;
     * 其次十进制以上的转化情况。例:11进制中,10用A表示
     *
     * @param M int整型 给定整数
     * @param N int整型 转换到的进制
     * @return string字符串
     */
    public static String solve(int M, int N) {
        if (M == 0)
            return "0";
        StringBuffer str = new StringBuffer();
        Stack<Integer> stack = new Stack<Integer>();
        if (M < 0) {
            str.append("-");
            M = Math.abs(M);
        }
 
        while (M > 0) {
            stack.push(M % N);
            M = M / N;
        }
        int temp;
        while (!stack.isEmpty()) {
            temp = stack.pop();
            if (temp > 9) {
                str.append((char) (temp - 10 + 'A'));
            } else {
                str.append(temp);
            }
        }
        return String.valueOf(str);
    }
}
 
posted @ 2020-12-30 14:24  忧愁的chafry  阅读(55)  评论(0编辑  收藏  举报