dev
214115093 6 months ago
parent 9d00c7827b
commit 800d62e6d5

@ -0,0 +1,69 @@
import java.util.Scanner;
public class jinzhizhuanhuan {
// 将任意进制数转换为十进制数
public static int toDecimal(String number, int base) {
int decimal = 0;
int power = 0;
int len = number.length();
for (int i = len - 1; i >= 0; i--) {
char digit = number.charAt(i);
int value = Character.digit(digit, base);
if (value == -1) {
throw new IllegalArgumentException("Invalid digit for base " + base + ": " + digit);
}
decimal += value * Math.pow(base, power);
power++;
}
return decimal;
}
// 将十进制数转换为任意进制数
public static String fromDecimal(int number, int base) {
if (number == 0) {
return "0";
}
StringBuilder result = new StringBuilder();
char[] digits = "0123456789ABCDEF".toCharArray();
while (number > 0) {
int remainder = number % base;
result.insert(0, digits[remainder]);
number /= base;
}
return result.toString();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入原始进制和数
System.out.print("请输入原始进制2-16: ");
int sourceBase = scanner.nextInt();
System.out.print("请输入原始数: ");
String sourceNumber = scanner.next();
// 输入目标进制
System.out.print("请输入目标进制2-16: ");
int targetBase = scanner.nextInt();
// 转换并输出结果
try {
int decimal = toDecimal(sourceNumber, sourceBase);
String targetNumber = fromDecimal(decimal, targetBase);
System.out.println("转换后的数是: " + targetNumber);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
scanner.close();
}
}
Loading…
Cancel
Save