上传了初始文件BaseConverter.java“

main
zxl 10 months ago
parent 045c7e254a
commit 7507aea561

@ -0,0 +1,75 @@
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();
}
}
Loading…
Cancel
Save