import java.util.Scanner; public class BaseConverter { // 将任意进制数转换为十进制数 public static long convertToDecimal(String number, int base) { long decimal = 0; int length = number.length(); for (int i = 0; i < length; i++) { char digit = number.charAt(length - 1 - i); int value; if (digit >= '0' && digit <= '9') { value = digit - '0'; } else if (digit >= 'A' && digit <= 'F') { value = digit - 'A' + 10; } else if (digit >= 'a' && digit <= 'f') { value = digit - 'a' + 10; } else { throw new IllegalArgumentException("Invalid character in number: " + digit); } decimal += value * Math.pow(base, i); } return decimal; } // 将十进制数转换为任意进制数 public static String convertToBase(long decimal, int base) { if (base < 2 || base > 16) { throw new IllegalArgumentException("Base must be between 2 and 16"); } StringBuilder result = new StringBuilder(); char[] digits = "0123456789ABCDEF".toCharArray(); while (decimal > 0) { int remainder = (int) (decimal % base); result.insert(0, digits[remainder]); decimal /= base; } if (result.length() == 0) { result.append('0'); } return result.toString(); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the number X: "); String numberX = scanner.nextLine(); System.out.print("Enter the base of X (2-16): "); int baseX = scanner.nextInt(); System.out.print("Enter the desired base Y (2-16): "); int baseY = scanner.nextInt(); try { long decimal = convertToDecimal(numberX, baseX); String numberY = convertToBase(decimal, baseY); System.out.println("The number " + numberX + " in base " + baseX + " is " + numberY + " in base " + baseY); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } scanner.close(); } }