您的位置首页生活百科

java编写进制转换器

java编写进制转换器

的有关信息介绍如下:

java编写进制转换器

进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一

首先打开eclipse

新建一个java项目,名字随意起

名字起好后,点击完成

右键点击项目名称,新建,类

类的名字叫TextNumberConversion

包的名字叫 com.zf.s2

点击完成

//操作数制转换的类

public class TextNumberConversion {

public static int NumberToTen(int beforeConversion, String number) {//其它进制转成十进制

double result = 0;//声明转换后的数值

String subString;

for (int i = 0; i < number.length(); i++) {//根据字符串的长度循环获得单个元素

subString = number.substring(i, i + 1);//将字符串按循环截取

if (beforeConversion == 16) {//判断传入的是否是十六进制

subString = sixteenCharToNumber(subString);//将字母转换成数字

}

result += Integer.parseInt(subString)//返回转换的结果

* Math.pow(beforeConversion, number.length() - i - 1);

}

return (int) result;

}

public static String TenToNumber(int afterConversion,String number) {//十进制转成其他进制

int current = Integer.parseInt(number);//将字符串转换成整数

String opResult = "";

if(afterConversion==16){//判断转换后的数制是否是16进制

while(current>=afterConversion){//判断传入的数是否大于16,大于则逢16进一

opResult+=sixteenNumberToChar(current%afterConversion);//将数字转换成字母

current/=afterConversion;

}

if(current!=0)opResult+=sixteenNumberToChar(current);//最终余数

}else{

while(current>=afterConversion){//判断传入的值是否大于转换后的数制

opResult+=current%afterConversion;

current/=afterConversion;

}

if(current!=0)opResult+=current;//最终余数

}

String riResult = "";//倒序二进制字符串

for(int i=opResult.length()-1;i>=0;i--){//根据二进制的转换方式进行循环输出

riResult = riResult + opResult.substring(i,i+1);

}

return riResult;

}

public static String sixteenCharToNumber(String s){//十六进制字母对应数字

String num="";

if(s.equals("A") || s.equals("a"))

num="10";

else if(s.equals("B") || s.equals("b"))

num="11";

else if(s.equals("C") || s.equals("c"))

num="12";

else if(s.equals("D") || s.equals("d"))

num="13";

else if(s.equals("E") || s.equals("E"))

num="14";

else if(s.equals("F") || s.equals("f"))

num="15";

else

num=s;

return num;

}

public static String sixteenNumberToChar(int num){//十六进制数字对应字母

String c="";

if(num==10) c="A";

else if(num==11) c="B";

else if(num==12) c="C";

else if(num==13) c="D";

else if(num==14) c="E";

else if(num==15) c="F";

else c=String.valueOf(num);

return c;

}

public static void main(String []args){//java程序的主入口处

String number;//要转换的数

int beforeConversion,afterConversion;//转换前的数制,转换后的数制

String result="";//经过数制转换后的结果

String stop="";

Scanner read=new Scanner(System.in);//得到用户输入的值

do{

System.out.println("请输入三个参数(整数):待转换的数据 转换前的数制 转换后的数制");

number=read.next();

beforeConversion=read.nextInt();

afterConversion=read.nextInt();

stop="Q";

}while(stop!="Q");//跳出循环

try {

if(beforeConversion!=10){//判断转换前的数制是否是十进制

String temp=String.valueOf(NumberToTen(beforeConversion,number));//获得转换成十进制的数

result=String.valueOf(TenToNumber(afterConversion, temp));//十进制转换成其它进制

}else{

result=String.valueOf(TenToNumber(afterConversion, number));//十进制转换成其它进制

}

System.out.println(beforeConversion+"进制的数:"+number+",转换成"+afterConversion+"进制的数为:"+result);

} catch (Exception e) {

System.out.print("转换失败,请输入合法数据!");

System.exit(-1);//所有程序(方法,类等)停止,系统停止运行

}

}

}

运行结果