题目
数的进制转换
要求实现一个十进制可以转换成其它进制的程序,测试用例设计为给定一个十进制数,根据所设定的参数值(2或8或16),输出转换为所设参数的数制的数。
写这个小数进制转换的初衷是做题需要,我看了网上大多数的进制转换,有10转2转8的,10转16的,写在一起的几乎没有,所以我整理在这,供参考。
我写的是只能转成2进制8进制16进制的,如果输入了其他进制会循环重新输入
一共是两个文件 ⑴BinaryConversion.java ⑵BinaryConversionTest.java
代码如下
⑴BinaryConversion.java
package DataStructureTestTwo;
public class BinaryConversion {
int originalNumber;
int radix;
public BinaryConversion(int originalNumber,int radix){
this.originalNumber=originalNumber;
this.radix=radix;
}
public boolean transformation(){
int top=0;
Object[] temp=new Object[10];
if(radix==2||radix==8){
while(originalNumber!=0){
temp[top++]=originalNumber%radix;
originalNumber=originalNumber/radix;
}
System.out.println("结果是:");
for(int i=top-1;i>=0;i--){
System.out.print(temp[i]);
}
return false;
}
if(radix==16){
while(originalNumber!=0){
if(originalNumber%radix>=10){
switch (originalNumber%radix) {
case 10:
temp[top++]="A";
break;
case 11:
temp[top++]="B";
break;
case 12:
temp[top++]="C";
break;
case 13:
temp[top++]="D";
break;
case 14:
temp[top++]="E";
break;
case 15:
temp[top++]="F";
break;
}
}
else{
temp[top++]=originalNumber%radix;
}
originalNumber=originalNumber/radix;
}
System.out.println("结果是:");
for(int i=top-1;i>=0;i--){
System.out.print(temp[i]);
}
return false;
}
return true;
}
}
⑵BinaryConversionTest.java
package DataStructureTestTwo;
import java.util.Scanner;
public class BinaryConversionTest {
private static Scanner in;
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入一个十进制数,并将其转换为N进制");
in = new Scanner(System.in);
int originalNumber = in.nextInt(); // 存放十进制数
System.out.println("请输入想要转换的进制数,eg: 2 8 16");
int radix = in.nextInt(); // 存放转换进制数
BinaryConversion dsc = new BinaryConversion(originalNumber,radix);
while (dsc.transformation()) {
System.out.println("请重新输入一个十进制数,并将其转换为N进制。");
originalNumber = in.nextInt(); // 存放十进制数
System.out.println("请输入想要转换的进制数,eg: 2 8 16");
radix = in.nextInt(); // 存放转换进制数
dsc=new BinaryConversion(originalNumber,radix);
}
}
}