parent
ee6b26343b
commit
2672cb71cc
@ -0,0 +1,63 @@
|
||||
import java.util.Scanner;
|
||||
|
||||
public class jinzhi {
|
||||
|
||||
// 将R进制数X转换为十进制
|
||||
private static int toDecimal(String number, int base) {
|
||||
int decimalValue = 0;
|
||||
int power = 1; // 当前位的权重
|
||||
|
||||
for (int i = number.length() - 1; i >= 0; i--) {
|
||||
char digit = number.charAt(i);
|
||||
int digitValue;
|
||||
|
||||
if (Character.isDigit(digit)) {
|
||||
digitValue = digit - '0'; // 数字字符转为整数
|
||||
} else {
|
||||
digitValue = Character.toUpperCase(digit) - 'A' + 10; // 字母字符转为整数
|
||||
}
|
||||
|
||||
decimalValue += digitValue * power;
|
||||
power *= base; // 更新权重
|
||||
}
|
||||
|
||||
return decimalValue;
|
||||
}
|
||||
|
||||
// 将十进制数转换为S进制
|
||||
private static String fromDecimal(int number, int base) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
while (number > 0) {
|
||||
int remainder = number % base;
|
||||
if (remainder < 10) {
|
||||
result.append((char) ('0' + remainder));
|
||||
} else {
|
||||
result.append((char) ('A' + remainder - 10));
|
||||
}
|
||||
number /= base;
|
||||
}
|
||||
|
||||
return result.reverse().toString(); // 反转结果
|
||||
}
|
||||
|
||||
// 主方法
|
||||
public static void main(String[] args) {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
|
||||
System.out.print("请输入源进制R (2-16): ");
|
||||
int baseR = scanner.nextInt();
|
||||
|
||||
System.out.print("请输入需要转换的数X (R进制): ");
|
||||
String numberX = scanner.next();
|
||||
|
||||
System.out.print("请输入目标进制S (2-16): ");
|
||||
int baseS = scanner.nextInt();
|
||||
|
||||
// 转换过程
|
||||
int decimalValue = toDecimal(numberX, baseR);
|
||||
String result = fromDecimal(decimalValue, baseS);
|
||||
|
||||
System.out.println("转换结果: " + result);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue