diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/computer1.iml b/.idea/computer1.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/.idea/computer1.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e1f830b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b4476f8 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/computer.java b/computer.java new file mode 100644 index 0000000..c6dfb8f --- /dev/null +++ b/computer.java @@ -0,0 +1,87 @@ +import java.util.Scanner; + +public class computer { + + // 将任意进制数转换为十进制数 + public static int toDecimal(String number, int base) { + int decimal = 0; + int power = 0; + + // 从字符串的末尾开始遍历 + for (int i = number.length() - 1; i >= 0; i--) { + char digit = number.charAt(i); + int value; + + // 处理0-9的数字字符 + if (digit >= '0' && digit <= '9') { + value = digit - '0'; + } + // 处理A-F(或a-f)的十六进制字符 + 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, power); + power++; + } + + return decimal; + } + + // 将十进制数转换为任意进制数 + public static String fromDecimal(int decimal, int base) { + if (base < 2 || base > 16) { + throw new IllegalArgumentException("Base must be between 2 and 16"); + } + + StringBuilder number = new StringBuilder(); + + // 当十进制数大于0时,持续转换 + while (decimal > 0) { + int remainder = decimal % base; + char digit; + + // 处理0-9 + if (remainder < 10) { + digit = (char) ('0' + remainder); + } + // 处理10-15(A-F) + else { + digit = (char) ('A' + (remainder - 10)); + } + + number.insert(0, digit); // 在字符串的开头插入新的字符 + decimal /= base; // 更新十进制数,去掉已转换的部分 + } + + // 如果转换后的字符串为空(即输入的十进制数为0),则返回"0" + return number.length() == 0 ? "0" : number.toString(); + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + // 输入原始进制数和目标进制 + System.out.print("输入原始数字的基数(2-16): "); + int originalBase = scanner.nextInt(); + + System.out.print("输入原始数字输入要转换的基数(2-16): "); + String originalNumber = scanner.next(); + + System.out.print("输入要转换的基数(2-16): "); + int targetBase = scanner.nextInt(); + + // 转换并输出结果 + int decimal = toDecimal(originalNumber, originalBase); + String convertedNumber = fromDecimal(decimal, targetBase); + + System.out.println("转换后的号码是: " + convertedNumber); + + scanner.close(); + } +} \ No newline at end of file diff --git a/out/production/computer1/.idea/.gitignore b/out/production/computer1/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/out/production/computer1/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/out/production/computer1/.idea/computer1.iml b/out/production/computer1/.idea/computer1.iml new file mode 100644 index 0000000..b107a2d --- /dev/null +++ b/out/production/computer1/.idea/computer1.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/computer1/.idea/misc.xml b/out/production/computer1/.idea/misc.xml new file mode 100644 index 0000000..e1f830b --- /dev/null +++ b/out/production/computer1/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/out/production/computer1/.idea/modules.xml b/out/production/computer1/.idea/modules.xml new file mode 100644 index 0000000..b4476f8 --- /dev/null +++ b/out/production/computer1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/out/production/computer1/.idea/vcs.xml b/out/production/computer1/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/out/production/computer1/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/out/production/computer1/HHJ.class b/out/production/computer1/HHJ.class new file mode 100644 index 0000000..f229e7f Binary files /dev/null and b/out/production/computer1/HHJ.class differ diff --git a/out/production/computer1/README.md b/out/production/computer1/README.md new file mode 100644 index 0000000..1e192cb --- /dev/null +++ b/out/production/computer1/README.md @@ -0,0 +1,2 @@ +# computer + diff --git a/out/production/computer1/computer.class b/out/production/computer1/computer.class new file mode 100644 index 0000000..1860bf9 Binary files /dev/null and b/out/production/computer1/computer.class differ