本文主要详细介绍在Java中实现任意二进制转换的方法。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
本文分享Java实现任意二进制转换的具体代码,供大家参考。具体内容如下
问题描述
写一个程序实现任意十进制之间的转换。
(一)、进制转换思想
1.先把任意十进制转换成十进制。
2.将十进制系统转换为任意系统。
3.该算法结合了十进制利用率公式的转换和十进制调用函数的转换。
(二)、问题分析
1.输入当前的十进制系统。
输入当前小数m和保证m1。
公共静态void main (String[] args){
int l,m,n;
字符串l16
Scanner sc=新扫描仪(system . in);
System.out.println('请问当前数字的十进制(m1)是什么');
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。
如果(m=10){
l=sc . nextint();
而(l!=0){
临时=(l)*math.pow(m,i);
I=1;
l=l/10;
}
}
(4)对于大于十的十进制,输入为字符串类型,采用l16=sc . next();
(5)可以直接调用包Integer.valueOf(),将任意小数转换成小数。
否则{
l16=sc . next();
temp=Integer.valueOf(l16,m);
}
(6)所以实际上这里只使用了temp=Integer.valueOf(l16,m );整个问题就可以解决了,因为十以下的小数也可以看作字符串类型。这里介绍两种方法。
4.输入要转换的十进制系统。
这里,还是介绍两种方法。十以下的十进制和十以上的十进制分别处理。
System.out.println('要转换成多少位数(n1)');
n=sc . nextint();
(1)十进制采用公式,并将处理方法封装在一个类中(ConversionN)
(2)temp是上一段转换的十进制数,N是要转换的十进制数。
(3)将decimal temp转换为N的思路是:将当前数除以N取余数(%运算),得到的数放在右边第一位(相当于这个数乘以1);将数减少十倍,保留整数部分,继续除以n,将得到的数放在右边第二位(相当于数乘以10);依次循环,最后的数加在一起,就是转换后的N进制数。
public static int conversion n(int temp,int n){
int l=0,j=1;
while(n=10 temp!=0){
l=(temp % n)* j;
temp=temp/n;
j=j * 10
}
返回l;
}
(4)十进制或更多直接调用包Integer.toString()将十进制转换为任意制。
string L16=integer . tostring(temp,n);
System.out.println('这个数从' M '转换成' N '的结果是:' L16 ');
5.输出转换后的值。
(1)由于选择转换的十进制不同(十以下,十以上),输出路径也不同。
(2)三元运算符用于根据范围选择路径:十进制以下的路径1,十进制以上的路径2,n=1的路径3(提示输入错误)。
(3)结合Switch语句完成selection语句。
int a=n=10 n1?1: n10?2:3;
开关(a){
案例1:
base conversion base=new base conversion();
System.out.println('这个数从' m '转换成' n '的结果是:' base。ConversionN(temp,n));
打破;
案例二:
string L16=integer . tostring(temp,n);
System.out.println('这个数从' M '转换成' N '的结果是:' L16 ');
打破;
案例三:
System.out.println('输入有误');
打破;
}
}
(三)、完整代码
把上述代码整理
导入Java。util。*;
公共类基本转换{
公共静态void main (String[] args){
int l,m,n;
字符串l16
扫描仪sc=新扫描仪(系统。在);
System.out.println('请问当前数为几进制(m1)’);
m=sc。nextint();
System.out.println('请问要转换为几进制(n1)’);
n=sc。nextint();
System.out.println('请输入当前数,每个数字均要小于m);
int temp=0,I=0;
如果(m=10){
l=sc。nextint();
而(l!=0){
临时=(l)*math.pow(m,i);
I=1;
l=l/10;
}
}
否则{
l16=sc。next();
temp=Integer.valueOf(l16,m);
}
int a=n=10 n1?1: n10?2:3;
开关(一){
案例1:
基数换算基数=新基数换算();
System.out.println('该数由' m '进制转化为"不"进制的结果为:' base .ConversionN(temp,n));
打破;
案例二:
字符串L16=整数。tostring(temp,n);
System.out.println('该数由' m '进制转化为"不"进制的结果为:' L16);
打破;
案例三:
System.out.println('输入有误');
打破;
}
}
公共静态int转换n(int temp,int n){
int l=0,j=1;
while(n=10 temp!=0){
l=(temp % n)* j;
temp=temp/n;
j=j * 10
}
返回l;
}
}
(四)运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。