JAVA进制转换,程序举例
package JAVA_Project_01_02;
import java.util.Scanner;
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++);
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){
while (current>=afterConversion){
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) {
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.println("转换失败,请输入合法数据!");
System.exit(-1);
}
}
}