给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数
Posted 马云12314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数相关的知识,希望对你有一定的参考价值。
给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数
输入描述: 输入为一行,M(32位整数)、N(2 ≤ N ≤** 16),以空格隔开。
输出描述: 为每个测试实例输出转换后的数,每个输出占一行。 如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
输入例子: 7 2
输出例子: 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()); } } } }
以上是关于给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数的主要内容,如果未能解决你的问题,请参考以下文章