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);
}
}
}