admin管理员组

文章数量:1794759

[JAVA]简易进制转换器

[JAVA]简易进制转换器

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