第一次第二题上传

pull/3/head
psj 11 months ago
commit 8d8303e4b8

3
.idea/.gitignore vendored

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/jinzhi/jinzhi.iml" filepath="$PROJECT_DIR$/jinzhi/jinzhi.iml" />
<module fileurl="file://$PROJECT_DIR$/test6298.iml" filepath="$PROJECT_DIR$/test6298.iml" />
</modules>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,103 @@
import java.util.Scanner;
public class JinZhi {
// 辅助方法:将任意进制的数转换为十进制
/**
*
*
* @param number
* @param base
* @return
*/
public static int toDecimal(String number, int base) {
int decimalValue = 0; // 十进制结果
int power = 0; // 当前位的权重(幂次)
// 从字符串的最后一个字符开始遍历
for (int i = number.length() - 1; i >= 0; i--) {
char digit = number.charAt(i); // 当前字符
int value = 0; // 当前字符对应的十进制值
// 根据字符计算其十进制值
if (Character.isDigit(digit)) {
value = digit - '0'; // 如果是数字,直接减去'0'的ASCII码
} else if (digit >= 'A' && digit <= 'F') {
value = digit - 'A' + 10; // 如果是大写字母,减去'A'的ASCII码后加10
} else if (digit >= 'a' && digit <= 'f') {
value = digit - 'a' + 10; // 如果是小写字母,减去'a'的ASCII码后加10
} else {
throw new IllegalArgumentException("输入的数字中包含无效字符: " + digit);
}
// 将当前字符的十进制值乘以权重后累加到结果中
decimalValue += value * Math.pow(base, power);
power++; // 权重增加
}
return decimalValue;
}
// 辅助方法:将十进制数转换为任意进制
/**
*
*
* @param decimalValue
* @param base
* @return
*/
public static String fromDecimal(int decimalValue, int base) {
if (decimalValue == 0) {
return "0"; // 如果十进制数为0直接返回"0"
}
StringBuilder result = new StringBuilder(); // 用于存储转换结果的StringBuilder对象
char[] digits = "0123456789ABCDEF".toCharArray(); // 表示所有可能的进制字符的数组
// 使用循环进行进制转换
while (decimalValue > 0) {
int remainder = decimalValue % base; // 取余数作为当前位的值
result.insert(0, digits[remainder]); // 将当前位的值添加到结果的开头
decimalValue /= base; // 十进制数除以目标进制,为下一次循环做准备
}
return result.toString(); // 返回转换后的结果字符串
}
// 主方法:执行进制转换
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象用于读取用户输入
// 读取要转换的数、其原始进制和目标进制
System.out.print("请输入要转换的数: ");
String number = scanner.nextLine();
System.out.print("请输入该数的原始进制2-16: ");
int inputBase = scanner.nextInt();
// 读取目标进制
System.out.print("请输入目标进制2-16: ");
int targetBase = scanner.nextInt();
// 验证输入的有效性
if (inputBase < 2 || inputBase > 16 || targetBase < 2 || targetBase > 16) {
System.out.println("无效的进制。进制必须在2到16之间。");
return; // 如果输入无效,则直接返回,不执行后续操作
}
try {
// 将输入的数转换为十进制数
int decimalValue = toDecimal(number, inputBase);
// 将十进制数转换为目标进制数
String result = fromDecimal(decimalValue, targetBase);
// 输出转换后的结果
System.out.println(number + "初始是" + inputBase + "进制;" + "在" + targetBase + "进制下是"+ result);
} catch (IllegalArgumentException e) {
// 捕获并处理非法参数异常
System.out.println("错误: " + e.getMessage());
}
scanner.close(); // 关闭Scanner对象释放资源
}
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="GENERAL_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Loading…
Cancel
Save