题目链接
题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入输出
输入:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例:
输入:7 2
输出:111
代码运行
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
StringBuffer sb = new StringBuffer();
//用tmp作为“字符串库”,要拼接成N进制,就在tmp中取字符,再append到sb上
String tmp = "0123456789ABCDEF";
boolean flag = false;//用来标记输进来的值m不是负数
if(m<0){
m=-m;//把负数的m,暂时换成正数
flag = true;//标记m是负数
}
while(m!=0){
//从tmp中获取下标为m%n的下标对应的字符,把它拼接到sb上
sb.append(tmp.charAt(m%n));
m = m/n;//更新m值
}
//如果flag==true,说明m是负数,负数前面要加-
if(flag){
sb.append("-");
}
sb.reverse();
System.out.print(sb);
}
}