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]简易进制转换器
发布评论