java编写进制转换器

作者:清风拂面 | 创建时间: 2023-04-28
进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一...
java编写进制转换器

操作方法

首先打开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);//所有程序(方法,类等)停止,系统停止运行 } } }

运行结果

点击展开全文

更多推荐