給定一個十進制數M,以及須要轉換的進制數N。 將十進制數M轉化爲N進制數

 給定一個十進制數M,以及須要轉換的進制數N。 將十進制數M轉化爲N進制數 java

 

輸入描述: 輸入爲一行,M(32位整數)、N(2 ≤ N ≤** 16),以空格隔開。測試

 

輸出描述: 爲每一個測試實例輸出轉換後的數,每一個輸出佔一行。 若是N大於9,則對應的數字規則參考16進制(好比,10用A表示,等等)spa

 

輸入例子: 7 2code

 

輸出例子: 111對象

 

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Stack;

public class Test2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int M = scanner.nextInt();
        int N = scanner.nextInt();
        if (M > 0 && N > 0) {
            convert(M, N);
        }
    }

    public static void convert(int m, int n) {
        // 建立一個map對象,用來存儲對應的字符
        Map<Integer, String> map = new HashMap<>();
        map.put(10, "A");
        map.put(11, "B");
        map.put(12, "C");
        map.put(13, "D");
        map.put(14, "E");
        map.put(15, "F");

        // 若是是10進制,直接輸出結束
        if (n == 10) {
            System.err.println(m);
            return;
        }

        // 建立一個棧
        Stack list = new Stack();

        // 對輸入的數值進行計算,直到這個值=1
        // 這裏主要使用短除法
        while (m > 0) {
            // 計算餘數,7%2=1
            int yushu = m % n;
            // 若是是小於10的進制
            if (n < 10) {
                list.push(yushu);
            } else {
                // 若是大於10的進制,取出餘數,而且找到對應的字母
                list.push((yushu > 9 ? map.get(yushu) : yushu));
            }
            m = m / n;
        }

        // 輸出
        if (!list.isEmpty()) {
            Enumeration items = list.elements();
            while (items.hasMoreElements()) {
                System.out.print(list.pop());

            }
        }
    }

}
相關文章
相關標籤/搜索