FengGuh 6 months ago
parent 800d62e6d5
commit e138c9dc16

@ -1,69 +1,82 @@
import java.util.Scanner; commit 800d62e6d558ef19f046ea0d70ed2c0dd74374d9
public class jinzhizhuanhuan { Author: 214115093 <214115093@qq.com>
Date: Thu Oct 10 14:46:20 2024 +0800
zhuanhuan
diff --git a/jinzhizhuanhuan.java b/jinzhizhuanhuan.java
// 将任意进制数转换为十进制数 new file mode 100644
public static int toDecimal(String number, int base) { index 0000000..10c0651
int decimal = 0; --- /dev/null
int power = 0; +++ b/jinzhizhuanhuan.java
int len = number.length(); @@ -0,0 +1,69 @@
+import java.util.Scanner;
for (int i = len - 1; i >= 0; i--) { +public class jinzhizhuanhuan {
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++; + public static int toDecimal(String number, int base) {
} + int decimal = 0;
+ int power = 0;
return decimal; + int len = number.length();
} +
+ for (int i = len - 1; i >= 0; i--) {
// 将十进制数转换为任意进制数 + char digit = number.charAt(i);
public static String fromDecimal(int number, int base) { + int value = Character.digit(digit, base);
if (number == 0) { + if (value == -1) {
return "0"; + throw new IllegalArgumentException("Invalid digit for base " + base + ": " + digit);
} + }
+ decimal += value * Math.pow(base, power);
StringBuilder result = new StringBuilder(); + power++;
char[] digits = "0123456789ABCDEF".toCharArray(); + }
+
while (number > 0) { + return decimal;
int remainder = number % base; + }
result.insert(0, digits[remainder]); +
number /= base; + // 将十进制数转换为任意进制数
} + public static String fromDecimal(int number, int base) {
+ if (number == 0) {
return result.toString(); + return "0";
} + }
+
public static void main(String[] args) { + StringBuilder result = new StringBuilder();
Scanner scanner = new Scanner(System.in); + char[] digits = "0123456789ABCDEF".toCharArray();
+
// 输入原始进制和数 + while (number > 0) {
System.out.print("请输入原始进制2-16: "); + int remainder = number % base;
int sourceBase = scanner.nextInt(); + result.insert(0, digits[remainder]);
System.out.print("请输入原始数: "); + number /= base;
String sourceNumber = scanner.next(); + }
+
// 输入目标进制 + return result.toString();
System.out.print("请输入目标进制2-16: "); + }
int targetBase = scanner.nextInt(); +
+ public static void main(String[] args) {
// 转换并输出结果 + Scanner scanner = new Scanner(System.in);
try { +
int decimal = toDecimal(sourceNumber, sourceBase); + // 输入原始进制和数
String targetNumber = fromDecimal(decimal, targetBase); + System.out.print("请输入原始进制2-16: ");
System.out.println("转换后的数是: " + targetNumber); + int sourceBase = scanner.nextInt();
} catch (IllegalArgumentException e) { + System.out.print("请输入原始数: ");
System.out.println(e.getMessage()); + String sourceNumber = scanner.next();
} +
+ // 输入目标进制
scanner.close(); + 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();
+ }
+}
\ No newline at end of file

Loading…
Cancel
Save