import java.util.Scanner; public class BaseConversion { // 将任意R进制数转换为十进制数 public static int convertToDecimal(String numStr, int base) { return Integer.parseInt(numStr, base); } // 将十进制数转换为任意R进制数 public static String convertFromDecimal(int num, int base) { if (num == 0) { return "0"; } StringBuilder result = new StringBuilder(); while (num > 0) { int remainder = num % base; if (remainder < 10) { result.append(remainder); } else { result.append((char) ('A' + (remainder - 10))); // A-F 对应 10-15 } num /= base; } return result.reverse().toString(); // 反转结果 } // 将一个R进制数转换为另一个R进制数 public static String convertBase(String numStr, int fromBase, int toBase) { int decimalNumber = convertToDecimal(numStr, fromBase); return convertFromDecimal(decimalNumber, toBase); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入要转换的数字: "); String numStr = scanner.nextLine(); System.out.print("请输入源进制 (2-16): "); int fromBase = scanner.nextInt(); System.out.print("请输入目标进制 (2-16): "); int toBase = scanner.nextInt(); // 验证进制范围 if (fromBase < 2 || fromBase > 16 || toBase < 2 || toBase > 16) { System.out.println("进制必须在 2 到 16 之间。"); } else { String result = convertBase(numStr, fromBase, toBase); System.out.println(numStr + " 从 " + fromBase + " 进制转换到 " + toBase + " 进制的结果是: " + result); } scanner.close(); //This is a test } }