学习目标:
目标:熟练运用Java所学知识
学习内容:
本文内容:使用java解决 给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
题目描述
【进制转换】给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1:
输入
7 2
输出
111
解题思路
思路比较简单,一个十进制数M转化整N进制数,就是先让M对N进行求模保存下得到的数字,在让M除以N,进行下一次循环将每次保存的数使用字符串拼接起来,在进行一次反转就是最终的结果
实现代码
public class HexBinDecOct {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int n=sc.nextInt();
char[] temp={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
boolean b=false;//表示正数
if(num<0){
b=true;//表示负数
num=0-num;
}
StringBuffer strBuf=new StringBuffer();
while(num>0){
//num%n得到转化后的每一位数字,
// 十六进制大于10需要得到A,B,C,D,E,F所以需要用到上面定义的数组
strBuf.append(temp[num%n]);
num/=n;
}
if(b){
//如果原数字是负数
strBuf.append('-');
}
System.out.println(strBuf.reverse());//反转并输出
}