JAVA简易进制转换器

    • 功能简述
    • 完整代码
    • 代码分析
        • 结构:
        • 主要逻辑:

功能简述

在控制台操作的进制转换器,可以实现16进制数与10进制数的互相转换,小于10进制数与10进制数互相转换。效果如下:

完整代码

//main方法
import java.util.Scanner;

public class GetRequest {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("目前可支持10以内的进制转换 和 十六进制的转换\n请输入要进制转换的数字: ");
		String num = in.next();
		
		System.out.println("这是几进制:");
		int a = in.nextInt();	
		System.out.println("想要转到几进制:");
		int b = in.nextInt();
		GetResult result = new GetResult(a, num, b);
		result.returnResult();
		in.close();
	}
}
//方法类
public class GetResult {
	int a, b;
	String num;

	public GetResult(int a, String num, int b) {
		this.a = a;
		this.num = num;
		this.b = b;
	}

	// 十以内的进制到十进制
	private String ToDec() {
		int tempNum = Integer.parseInt(num);
		int result = 0;
		int counter = 0;
		while (tempNum > 0) {
			result += (tempNum % 10) * Math.pow(a, counter++); // 101 1*2*0 
			tempNum /= 10;
		}
		return result + "";
	}

	// 对等于或小于10进制的数进行转换
	private String ToNonDec() {
		//StringBuilder result = new StringBuilder();
		String result="";
		int tempNum = Integer.parseInt(num);
		while (tempNum > 0) {
			//result.insert(0, tempNum % b);
			result = ((tempNum % b)+"")+result;
			tempNum /= b;
		}
		return result;//result.toString()
	}

	// 10到16进制
	private String DecToHex() {
		int number = Integer.parseInt(num);
		int i = 0;
		StringBuilder result = new StringBuilder();
		char[] S = new char[100];
		if (number == 0) {
			return "0";
		} else {
			while (number != 0) {
				int t = number % 16;
				if (t >= 0 && t < 10) {
					S[i] = (char) (t + '0');
					i++;
				} else {
					S[i] = (char) (t + 'A' - 10);
					i++;
				}
				number = number / 16;
			}
			for (int j = i - 1; j >= 0; j--) {
				result.append(S[j] + "");
			}
			return result.toString();
		}
	}

	// 16到10进制
	private String HexToDec() {
		char[] number = new char[num.length()];
		int result = 0;
		int temp = 0;
		int count = 0;
		for (int n = 0; n < num.length(); n++) {
			number[n] = num.charAt(n);
		}
		// 1e
		// 1 number[1]='e' temp = 14 14*16^0=14
		// 0 number[0]='1'
		for (int n = num.length() - 1; n >= 0; n--) {
			// 123456789ABCDEF
			if (number[n] == '1')
				temp = 1;
			if (number[n] == '2')
				temp = 2;
			if (number[n] == '3')
				temp = 3;
			if (number[n] == '4')
				temp = 4;
			if (number[n] == '5')
				temp = 5;
			if (number[n] == '6')
				temp = 6;
			if (number[n] == '7')
				temp = 7;
			if (number[n] == '8')
				temp = 8;
			if (number[n] == '9')
				temp = 9;
			if (number[n] == 'A' || number[n] == 'a')
				temp = 10;
			if (number[n] == 'B' || number[n] == 'b')
				temp = 11;
			if (number[n] == 'C' || number[n] == 'c')
				temp = 12;
			if (number[n] == 'D' || number[n] == 'd')
				temp = 13;
			if (number[n] == 'E' || number[n] == 'e')
				temp = 14;
			if (number[n] == 'F' || number[n] == 'f')
				temp = 15;
			result += Integer.parseInt(String.valueOf(temp)) * Math.pow(a, count++);
		}
		return result + "";
	}

	public void returnResult() {
		String result = "";
		// 非十进制转换到十进制
		if (a == 10 && b == 16) {
			result = DecToHex();
		} else if (a == 16 && b == 10) {
			result = HexToDec();
		} 
		else if (a == 16 && b<10 && b>0){
			num = HexToDec();
			//System.out.println("这个时候num是"+num);
			result = ToDec();
		}
		//小于10的进制转换到16进制
		else if(b == 16 && a<10 && a>0){
			//先转换的10再从10转换到16
			num =ToDec();
			//System.out.println("这个时候num是"+num);
			result = DecToHex();
		}
		//小于十的进制转换到十进制
		else if (b == 10) {
			result = ToDec();
		}
		// 十进制转换到小于十的进制
		else {
			result = ToNonDec();
		}
		System.out.println(a + "进制转换到" + b + "进制的结果为:" + result);
	}
}

代码分析

结构:

方法类里主要分为6各部分:有参构造器、结果计算器、以及四个进制转换方法。
main方法里获取用户输入的选择,调用方法进行运算。

主要逻辑:

用有参构造器来获取用户的输入,用returnResult()来根据用户的选择来选择调用哪一种进制转换的方法。

更多推荐

[JAVA]简易进制转换器