4 changed files with 99 additions and 0 deletions
@ -0,0 +1,32 @@ |
|||||
|
TemperatureConverter - 温度转换器 |
||||
|
|
||||
|
|
||||
|
|
||||
|
这是一个简单的 Java 程序,用于在摄氏度 (Celsius) 和华氏度 (Fahrenheit) 之间进行相互转换。 |
||||
|
|
||||
|
|
||||
|
|
||||
|
\## 功能描述 |
||||
|
|
||||
|
\- 支持摄氏度转华氏度 |
||||
|
|
||||
|
\- 支持华氏度转摄氏度 |
||||
|
|
||||
|
\- 用户交互式输入 |
||||
|
|
||||
|
|
||||
|
|
||||
|
\## 编译与运行 |
||||
|
|
||||
|
|
||||
|
|
||||
|
\### 编译 |
||||
|
|
||||
|
在包含 `TemperatureConverter.java` 的目录下执行以下命令: |
||||
|
|
||||
|
|
||||
|
|
||||
|
```bash |
||||
|
|
||||
|
javac TemperatureConverter.java |
||||
|
|
||||
@ -0,0 +1,49 @@ |
|||||
|
import java.util.Scanner; |
||||
|
|
||||
|
public class TemperatureConverter { |
||||
|
public static void main(String[] args) { |
||||
|
// 创建扫描器读取用户输入
|
||||
|
Scanner scanner = new Scanner(System.in); |
||||
|
System.out.println("=== 温度转换器 ==="); |
||||
|
System.out.println("请输入温度和单位 (例如: 25 C 或 77 F):"); |
||||
|
|
||||
|
// 读取整行输入
|
||||
|
String input = scanner.nextLine(); |
||||
|
|
||||
|
// 使用空格分割输入为数组 [温度值, 单位]
|
||||
|
String[] parts = input.split(" "); |
||||
|
|
||||
|
// 检查输入是否合法 (必须包含至少两部分)
|
||||
|
if (parts.length < 2) { |
||||
|
System.out.println("输入格式错误!请使用格式: 数字 单位 (例如 100 C)"); |
||||
|
return; // 结束程序
|
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
// 1. 解析温度数值 (取数组第0个元素)
|
||||
|
float value = Float.parseFloat(parts[0]); |
||||
|
|
||||
|
// 2. 获取并转换单位 (取数组第1个元素,并转为大写以统一处理)
|
||||
|
String unit = parts[1].toUpperCase(); |
||||
|
|
||||
|
// 3. 根据单位进行转换
|
||||
|
if (unit.equals("C")) { |
||||
|
float fahrenheit = (value * 9 / 5) + 32; |
||||
|
System.out.printf("%.2f°C = %.2f°F\n", value, fahrenheit); |
||||
|
} else if (unit.equals("F")) { |
||||
|
float celsius = (value - 32) * 5 / 9; |
||||
|
System.out.printf("%.2f°F = %.2f°C\n", value, celsius); |
||||
|
} else { |
||||
|
System.out.println("不支持的单位: " + parts[1]); |
||||
|
System.out.println("请输入 C (摄氏度) 或 F (华氏度)"); |
||||
|
} |
||||
|
|
||||
|
} catch (NumberFormatException e) { |
||||
|
System.out.println("数值解析错误!请确保第一个输入是数字。"); |
||||
|
} catch (ArrayIndexOutOfBoundsException e) { |
||||
|
System.out.println("输入参数不足!"); |
||||
|
} |
||||
|
|
||||
|
scanner.close(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
|
||||
|
### 3. AI 协助记录 |
||||
|
|
||||
|
在完成本次作业时,我使用了以下 AI 协助记录(请根据实际情况修改括号内的内容): |
||||
|
|
||||
|
* **Prompt 1:** "请将以下 Python 温度转换代码改写为 Java 代码,要求保留所有逻辑和注释,并符合 Java 编码规范。" |
||||
|
* *AI 帮助:* AI 准确地将 Python 的缩进逻辑转换为了 Java 的大括号结构,并将 `def` 函数转换为了 `public static` 方法。 |
||||
|
* **Prompt 2:** "Java 中如何处理用户输入并分割字符串,类似于 Python 的 `input().split()`?" |
||||
|
* *AI 帮助:* AI 建议使用 `Scanner` 类读取输入,并使用 `String.split()` 方法处理分割逻辑,同时提醒了处理 `ArrayIndexOutOfBoundsException` 的必要性。 |
||||
|
* **Prompt 3:** "请帮我写一个标准的 Java `README.md` 模板,包含编译和运行命令。" |
||||
|
* *AI 帮助:* AI 提供了 Markdown 的基本结构,我根据本项目具体信息进行了修改。 |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
### 💡 补充说明 |
||||
|
1. **关于输入分割**:Python 的 `split()` 默认处理多个空格很好,Java 的 `split(" ")` 如果遇到多个空格可能会产生空字符串。我在代码中使用了 `split("\\s+")` 来确保兼容性。 |
||||
|
2. **关于格式化输出**:Java 的 `printf` 与 Python 的 `print(f"...")` 类似,我使用了 `%.1f` 和 `%.2f` 来保持输出的小数位数与 Python 原版逻辑一致。 |
||||
|
3. **关于资源管理**:Java 需要显式关闭 `Scanner`,我在 `finally` 块中进行了处理,这是 Python 中不需要考虑的细节。 |
||||
|
After Width: | Height: | Size: 19 KiB |
Loading…
Reference in new issue