问题描述
编写程序实现任意进制间的相互转换
(一)进制转换思想
- 先把任意进制转化为十进制
- 再把十进制转化为任意进制
- 本算法结合了十以下进制利用公式转换以及十以上进制调用函数转换
(二)问题分析
1.输入当前数进制
输入当前进制 m ,且保证 m>1
public static void main (String[] args){
int l,m,n;
String l16;
Scanner sc = new Scanner(System.in);
System.out.println("请问当前数为几进制(m>1)");
m = sc.nextInt();
2.输入当前数
(1)m进制数要保证每个数字小于 m
System.out.println("请输入当前数,每个数字均要小于"+m);
int temp=0,i=0;
(2)对于十以下进制,输入的是数值型,采用 l=sc.nextInt();
(3)利用公式计算转化为十进制,可调用 Math 的 pow(m,i) 函数,用以计算 m 的 i 次幂;数值的每个数字从右到左依次与 m^i (i=0,1,2……)相乘,可利用除10求余(%)运算;每计算一次,原数据缩小十倍且只保留整数部分(除运算 :/ ),直到数值为0结束
if(m<=10){
l=sc.nextInt();
while(l!=0){
temp+=(l%10)*Math.pow(m,i);
i+=1;
l=l/10;
}
}
(4)对于大于十的进制,输入的是字符串型,采用 l16=sc.next();
(5)可以直接调用 把任意进制转化为十进制 的包Integer.valueOf()
else{
l16=sc.next();
temp=Integer