給定一個十進制數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()); } } } }