diff --git a/W1-梁凯雄-202402050120/AI协助记录.txt b/W1-梁凯雄-202402050120/AI协助记录.txt
new file mode 100644
index 0000000..be8dce7
--- /dev/null
+++ b/W1-梁凯雄-202402050120/AI协助记录.txt
@@ -0,0 +1,19 @@
+/*kimi k2.5*/
+P(prompt):
+将上述 Python 程序完整移植为 Java 程序,文件名为 `TemperatureConverter.java`。
+ - 在 Java 源码中保留与扩展注释,解释每个方法的功能与参数(中文注释可接受)。
+A(AI Answer):
+*Java程序
+*关键语法对照说明
+/*claude haiku 4.5*/
+P:
+可选加分项:
+
+支持命令行参数模式(例如 java TemperatureConverter 36.6 C)。
+支持批量转换(从文件读取多行温度并输出结果)
+将代码修改以符合以上加分项
+A:
+*修改过的Java程序
+*README.md
+*temperatures.txt /*测试文件*/
+*测试
\ No newline at end of file
diff --git a/W1-梁凯雄-202402050120/README.md b/W1-梁凯雄-202402050120/README.md
new file mode 100644
index 0000000..f189fac
--- /dev/null
+++ b/W1-梁凯雄-202402050120/README.md
@@ -0,0 +1,512 @@
+# 温度转换器 - 完整使用指南
+
+## 📋 目录
+
+1. [概述](#概述)
+2. [特性](#特性)
+3. [使用方法](#使用方法)
+4. [交互模式智能纠正](#交互模式智能纠正)
+5. [编译与运行](#编译与运行)
+6. [示例](#示例)
+7. [技术细节](#技术细节)
+
+---
+
+## 概述
+
+温度转换器是一个功能完整的Java程序,支持摄氏度(Celsius)和华氏度(Fahrenheit)之间的互相转换。
+
+**支持三种工作模式**:
+1. **命令行参数模式** - 直接在命令行传入温度和单位
+2. **批量转换模式** - 从文件读取温度数据进行批量处理
+3. **交互式模式** - 实时输入温度数据,获得智能纠正提示
+
+---
+
+## 特性
+
+### ✨ 核心功能
+
+- ✅ 摄氏度 ↔ 华氏度 双向转换
+- ✅ 精确到小数点后两位
+- ✅ 三种灵活的使用模式
+- ✅ 智能的错误诊断和纠正建议
+
+### 🎯 转换公式
+
+| 方向 | 公式 |
+|-----|------|
+| 摄氏 → 华氏 | F = C × 9/5 + 32 |
+| 华氏 → 摄氏 | C = (F - 32) × 5/9 |
+
+### 🚀 加分项(已实现)
+
+1. **✅ 命令行参数模式**
+ - 支持 `java TemperatureConverter 36.6 C`
+ - 自动识别粘连格式(如 `36.6c`)
+
+2. **✅ 批量转换模式**
+ - 从文件读取多行温度数据
+ - 支持注释行和空行
+ - 提供转换统计
+
+3. **✅ 交互模式智能纠正**
+ - 自动识别和修复粘连单位
+ - 缺少单位时给出具体提示
+ - 无效输入时指出问题所在
+
+---
+
+## 使用方法
+
+### 1️⃣ 命令行参数模式
+
+**最快速的使用方式** - 单行转换,无需等待
+
+#### 语法
+
+```bash
+java TemperatureConverter <温度> <单位>
+```
+
+#### 示例
+
+```bash
+# 标准格式(有空格)
+java TemperatureConverter 36.6 C
+# 输出:36.60 °C = 97.88 °F
+
+# 粘连格式(无空格)
+java TemperatureConverter 36.6c
+# 输出:36.60 °C = 97.88 °F
+
+# 华氏到摄氏
+java TemperatureConverter 98.6 F
+# 输出:98.60 °F = 37.00 °C
+```
+
+#### 特点
+
+- 快速高效,适合脚本编程
+- 自动处理粘连格式
+- 三种模式中最简洁
+
+---
+
+### 2️⃣ 批量转换模式
+
+**为数据处理设计** - 处理多行温度数据
+
+#### 语法
+
+```bash
+java TemperatureConverter <文件路径>
+```
+
+#### 文件格式
+
+每行一条数据,格式:`<温度值> <单位>`
+
+```
+# 示例:temperatures.txt
+# 常见体温
+36.6 C
+37.5 C
+
+# 常见环境温度
+25 C
+30 C
+
+# 华氏度
+98.6 F
+77 F
+
+# 特殊温度
+0 C
+100 C
+32 F
+212 F
+```
+
+#### 运行示例
+
+```bash
+java TemperatureConverter temperatures.txt
+```
+
+#### 输出
+
+```
+从文件读取温度数据:temperatures.txt
+========================================
+第 4 行:36.60 °C = 97.88 °F
+第 5 行:37.50 °C = 99.50 °F
+第 8 行:25.00 °C = 77.00 °F
+...
+========================================
+处理完成:共处理 21 行,成功转换 10 条。
+```
+
+#### 特点
+
+- 支持注释行(以 `#` 开头)
+- 支持空行(自动跳过)
+- 显示处理统计信息
+- 适合批量数据导入/导出
+
+---
+
+### 3️⃣ 交互式模式(推荐)
+
+**用户友好的交互方式** - 实时输入,即时反馈
+
+#### 启动
+
+```bash
+java TemperatureConverter
+```
+
+#### 功能说明
+
+**自动纠正粘连单位**
+
+当输入数值和单位直接相连时(如 `100f`),程序会自动识别并显示纠正提示:
+
+```
+> 100f
+✓ 已自动纠正输入:'100f' → '100 F'
+100.00 °F = 37.78 °C
+```
+
+支持的粘连格式:
+- `100f`, `100F` → 自动转换为 `100 F`
+- `36.6c`, `36.6C` → 自动转换为 `36.6 C`
+
+**智能缺少单位提示**
+
+缺少温度单位时,程序会拒绝转换并给出具体建议:
+
+```
+> 100
+⚠️ 缺少温度单位!
+ 请指定 C(摄氏度)或 F(华氏度)
+ 示例:100 C 或 100 F
+```
+
+**无效单位诊断**
+
+不支持的单位会被立即识别并告知:
+
+```
+> 100 K
+❌ 不支持的温度单位:'K'
+ 支持的单位:C(摄氏度)或 F(华氏度)
+ 示例:100 C 或 100 F
+```
+
+**无效数值诊断**
+
+数值格式不正确时会给出清晰提示:
+
+```
+> abc C
+❌ 温度值不是有效的数字:'abc'
+ 请输入数值(如 36.6, 100 等)
+ 示例:36.6 C
+```
+
+**标准格式直接转换**
+
+格式正确时直接显示结果:
+
+```
+> 36.6 C
+36.60 °C = 97.88 °F
+
+> 98.6 F
+98.60 °F = 37.00 °C
+```
+
+**退出程序**
+
+```
+> quit
+程序退出。
+
+或者
+
+> exit
+程序退出。
+```
+
+---
+
+## 交互模式智能纠正
+
+### 纠正功能详解
+
+| 错误类型 | 输入示例 | 程序行为 | 输出 |
+|--------|--------|--------|------|
+| **粘连单位** | `100f` | 自动纠正并转换 | `✓ 已自动纠正输入:'100f' → '100 F'`
`100.00 °F = 37.78 °C` |
+| **有空格粘连** | `100 f` | 直接识别并转换 | `100.00 °F = 37.78 °C` |
+| **缺少单位** | `100` | 拒绝并提示 | `⚠️ 缺少温度单位!`
` 示例:100 C 或 100 F` |
+| **无效单位** | `100 K` | 拒绝并说明原因 | `❌ 不支持的温度单位:'K'`
` 示例:100 C 或 100 F` |
+| **无效数值** | `abc C` | 拒绝并给出示例 | `❌ 温度值不是有效的数字:'abc'`
` 示例:36.6 C` |
+| **标准正确** | `36.6 C` | 直接转换 | `36.60 °C = 97.88 °F` |
+
+### 完整交互示例
+
+```
+========================================
+温度转换器 - 交互式模式
+========================================
+请输入要转换的温度与单位(例如 36.6 C 或 97 F)
+输入 'quit' 或 'exit' 退出程序
+========================================
+
+> 36.6 C
+36.60 °C = 97.88 °F
+
+> 100f
+✓ 已自动纠正输入:'100f' → '100 F'
+100.00 °F = 37.78 °C
+
+> 100 f
+100.00 °F = 37.78 °C
+
+> 100
+⚠️ 缺少温度单位!
+ 请指定 C(摄氏度)或 F(华氏度)
+ 示例:100 C 或 100 F
+
+> 100 K
+❌ 不支持的温度单位:'K'
+ 支持的单位:C(摄氏度)或 F(华氏度)
+ 示例:100 C 或 100 F
+
+> abc C
+❌ 温度值不是有效的数字:'abc'
+ 请输入数值(如 36.6, 100 等)
+ 示例:36.6 C
+
+> quit
+程序退出。
+```
+
+---
+
+## 编译与运行
+
+### 前置要求
+
+- Java JDK 8 或更高版本
+- 命令行/终端访问权限
+
+### 编译
+
+```bash
+# 进入项目目录
+cd d:\VisualStudioProgram\VSCodePrograms\JavaLearningProject
+
+# 编译源代码
+javac TemperatureConverter.java
+```
+
+编译成功后会生成 `TemperatureConverter.class` 文件。
+
+### 运行
+
+#### 模式选择
+
+```bash
+# 1. 交互式模式(推荐)
+java TemperatureConverter
+
+# 2. 命令行参数模式
+java TemperatureConverter 36.6 C
+
+# 3. 批量转换模式
+java TemperatureConverter temperatures.txt
+
+# 4. 显示帮助信息
+java TemperatureConverter -h
+java TemperatureConverter --help
+```
+
+---
+
+## 示例
+
+### 各种场景的使用
+
+#### 场景1:快速查询单个温度
+
+```bash
+$ java TemperatureConverter 37 C
+37.00 °C = 98.60 °F
+```
+
+#### 场景2:处理粘连格式
+
+```bash
+$ java TemperatureConverter 37c
+37.00 °C = 98.60 °F
+```
+
+#### 场景3:医学应用 - 正常体温
+
+```bash
+$ java TemperatureConverter 36.5 C
+36.50 °C = 97.70 °F
+
+$ java TemperatureConverter 98.6 F
+98.60 °F = 37.00 °C
+```
+
+#### 场景4:物理学应用 - 相变点
+
+```bash
+$ java TemperatureConverter 0 C
+0.00 °C = 32.00 °F
+
+$ java TemperatureConverter 100 C
+100.00 °C = 212.00 °F
+```
+
+#### 场景5:批量处理数据
+
+创建 `test.txt`:
+
+```
+# 测试数据
+25 C
+30 C
+35 C
+96.8 F
+104 F
+```
+
+运行:
+
+```bash
+$ java TemperatureConverter test.txt
+从文件读取温度数据:test.txt
+========================================
+第 2 行:25.00 °C = 77.00 °F
+第 3 行:30.00 °C = 86.00 °F
+第 4 行:35.00 °C = 95.00 °F
+第 5 行:96.80 °F = 36.00 °C
+第 6 行:104.00 °F = 40.00 °C
+========================================
+处理完成:共处理 6 行,成功转换 5 条。
+```
+
+---
+
+## 技术细节
+
+### 程序结构
+
+```
+TemperatureConverter.java
+├── 转换方法
+│ ├── celsiusToFahrenheit() - C → F
+│ └── fahrenheitToCelsius() - F → C
+│
+├── 智能诊断方法
+│ ├── extractAdjacent() - 提取粘连格式
+│ ├── analyzeAndSuggestFix() - 错误分析与建议
+│ └── convertWithValidatedInput() - 执行转换
+│
+├── 交互方法
+│ ├── interactiveMode() - 交互式模式
+│ └── convertSingleTemperature() - 单个转换(命令行/文件)
+│
+├── 数据处理方法
+│ ├── convertFromFile() - 批量文件处理
+│ └── showUsage() - 使用说明
+│
+└── 入口点
+ └── main() - 程序入口,模式选择
+```
+
+### 粘连单位识别
+
+**正则表达式**:`^(\d+(?:\.\d+)?)\s*([CcFf])$`
+
+- `\d+` - 一个或多个数字
+- `(?:\.\d+)?` - 可选的小数部分
+- `\s*` - 零个或多个空白字符
+- `[CcFf]` - 单位字母(C/c/F/f)
+
+**支持的格式**:
+- `100f` → ["100", "F"]
+- `36.6c` → ["36.6", "C"]
+- `100 f` → ["100", "F"](允许空格)
+- `36.6 c` → ["36.6", "C"](允许空格)
+
+### 三种模式的差异
+
+| 特性 | 交互模式 | 命令行模式 | 文件模式 |
+|-----|--------|---------|--------|
+| **启用粘连识别** | ✅ 是 | ✅ 是 | ✅ 是 |
+| **显示纠正提示** | ✅ 是 | ❌ 否 | ❌ 否 |
+| **缺少单位处理** | ❌ 拒绝 | ✅ 默认C | ✅ 默认C |
+| **错误详细提示** | ✅ 是 | ❌ 否 | ❌ 否 |
+| **单/多行处理** | 多行循环 | 单行 | 多行批处理 |
+
+---
+
+## 常见问题
+
+**Q: 如何让程序接受更多的温度单位(如K、R)?**
+
+A: 修改 `analyzeAndSuggestFix()` 方法中的单位验证逻辑,添加新的单位判断条件和转换公式。
+
+**Q: 如何修改输出精度(目前是两位小数)?**
+
+A: 更改 `System.out.printf()` 中的格式字符串,例如 `%.2f` 改为 `%.3f` 表示三位小数。
+
+**Q: 批量模式中,某一行出错会影响整个文件处理吗?**
+
+A: 不会。程序会跳过无效行,继续处理后续行,最后显示成功和失败的统计。
+
+**Q: 能否在命令行模式中显示纠正提示?**
+
+A: 可以。修改 `convertSingleTemperature()` 方法中对 `extractAdjacent()` 的调用,改为调用 `analyzeAndSuggestFix()` 并传入 `true` 参数。
+
+---
+
+## 文件列表
+
+| 文件 | 说明 |
+|-----|------|
+| `TemperatureConverter.java` | 源代码文件 |
+| `TemperatureConverter.class` | 编译后的字节码 |
+| `temperatures.txt` | 示例数据文件 |
+| `README_增强版.md` | 原始功能说明(已合并到本文档) |
+| `交互模式改进说明.md` | 交互模式详细说明(已合并到本文档) |
+| `粘连单位修复总结.md` | 修复说明(已合并到本文档) |
+
+---
+
+## 版本信息
+
+- **程序版本**:2.0
+- **功能扩展**:3项加分项 + 交互模式智能纠正
+- **最后更新**:2026年03月
+- **Java版本要求**:JDK 8+
+
+---
+
+## 总结
+
+这个温度转换器程序演示了以下编程概念:
+
+1. **正则表达式** - 灵活的模式匹配和数据提取
+2. **异常处理** - 文件IO和数据验证
+3. **模式设计** - 多种工作模式的统一管理
+4. **用户交互** - 友好的错误提示和智能建议
+5. **代码组织** - 清晰的方法划分和职责分离
+
+祝你使用愉快! 🎉
diff --git a/W1-梁凯雄-202402050120/TemperatureConverter.java b/W1-梁凯雄-202402050120/TemperatureConverter.java
new file mode 100644
index 0000000..af5f366
--- /dev/null
+++ b/W1-梁凯雄-202402050120/TemperatureConverter.java
@@ -0,0 +1,338 @@
+import java.util.Scanner;
+import java.io.File;
+import java.io.FileNotFoundException;
+
+/**
+ * 温度转换器示例程序(Java)
+ * 支持摄氏度(C)与华氏度(F)之间互转
+ * 增强版本:支持命令行参数和文件批量转换
+ */
+public class TemperatureConverter_PytoJava {
+
+ /**
+ * 将摄氏度转换为华氏度。
+ *
+ * 换算公式:F = C × 9/5 + 32
+ *
+ * @param c 摄氏温度(浮点数)
+ * @return 对应的华氏温度(浮点数)
+ */
+ public static double celsiusToFahrenheit(double c) {
+ return c * 9.0 / 5.0 + 32.0;
+ }
+
+ /**
+ * 将华氏度转换为摄氏度。
+ *
+ * 换算公式:C = (F - 32) × 5/9
+ *
+ * @param f 华氏温度(浮点数)
+ * @return 对应的摄氏温度(浮点数)
+ */
+ public static double fahrenheitToCelsius(double f) {
+ return (f - 32.0) * 5.0 / 9.0;
+ }
+
+ /**
+ * 从粘连格式中提取数值和单位。
+ * 例如:100f → ["100", "F"],36.6c → ["36.6", "C"],100 f → ["100", "F"]
+ * 支持单位前的空格。
+ *
+ * @param input 粘连格式的输入
+ * @return 包含数值和单位的数组,如果无法提取则返回 null
+ */
+ public static String[] extractAdjacent(String input) {
+ String trimmed = input.trim();
+ // 使用正则表达式匹配粘连格式,允许单位前有空格
+ // 格式:数字(可选小数) + 可选空格 + C或F
+ java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("^(\\d+(?:\\.\\d+)?)\\s*([CcFf])$");
+ java.util.regex.Matcher matcher = pattern.matcher(trimmed);
+
+ if (matcher.matches()) {
+ String value = matcher.group(1);
+ String unit = matcher.group(2).toUpperCase();
+ return new String[]{value, unit};
+ }
+ return null;
+ }
+
+ /**
+ * 分析并提供错误诊断和建议。
+ * 在交互模式中使用此方法进行智能纠正。
+ *
+ * @param input 用户输入
+ * @param isInteractiveMode 是否为交互模式
+ * @return 如果输入有效返回true,否则返回false并打印诊断信息
+ */
+ public static boolean analyzeAndSuggestFix(String input, boolean isInteractiveMode) {
+ input = input.trim();
+
+ // 1. 检查粘连单位模式(如 100f)
+ String[] adjacent = extractAdjacent(input);
+ if (adjacent != null) {
+ // 判断是否真正是粘连格式(数值和单位直接相连,无空格)
+ boolean isDirectlyAdjacent = input.matches("^\\d+(?:\\.\\d+)?[CcFf]$");
+ if (isDirectlyAdjacent && isInteractiveMode) {
+ System.out.println("✓ 已自动纠正输入:'" + input + "' → '" + adjacent[0] + " " + adjacent[1] + "'");
+ }
+ // 进行转换
+ return convertWithValidatedInput(Double.parseDouble(adjacent[0]), adjacent[1]);
+ }
+
+ // 2. 分割输入
+ String[] parts = input.split("\\s+");
+
+ // 3. 检查缺少单位模式(如 100)
+ if (parts.length == 1) {
+ try {
+ Double.parseDouble(parts[0]);
+ // 能解析为数字,但缺少单位
+ if (isInteractiveMode) {
+ System.out.println("⚠️ 缺少温度单位!");
+ System.out.println(" 请指定 C(摄氏度)或 F(华氏度)");
+ System.out.println(" 示例:" + parts[0] + " C 或 " + parts[0] + " F");
+ }
+ return false;
+ } catch (NumberFormatException e) {
+ // 既不是数字也不是正确格式
+ if (isInteractiveMode) {
+ System.out.println("❌ 温度值不是有效的数字:'" + parts[0] + "'");
+ System.out.println(" 请输入数值(如 36.6, 100 等)");
+ System.out.println(" 示例:36.6 C");
+ }
+ return false;
+ }
+ }
+
+ // 4. 验证数值有效性
+ try {
+ double value = Double.parseDouble(parts[0]);
+ String unit = parts[1].toUpperCase();
+
+ // 5. 验证单位有效性
+ if (!unit.startsWith("C") && !unit.startsWith("F")) {
+ if (isInteractiveMode) {
+ System.out.println("❌ 不支持的温度单位:'" + unit + "'");
+ System.out.println(" 支持的单位:C(摄氏度)或 F(华氏度)");
+ System.out.println(" 示例:" + parts[0] + " C 或 " + parts[0] + " F");
+ }
+ return false;
+ }
+
+ // 转换成功
+ return convertWithValidatedInput(value, unit);
+
+ } catch (NumberFormatException e) {
+ if (isInteractiveMode) {
+ System.out.println("❌ 温度值不是有效的数字:'" + parts[0] + "'");
+ System.out.println(" 请输入数值(如 36.6, 100 等)");
+ System.out.println(" 示例:36.6 C");
+ }
+ return false;
+ }
+ }
+
+ /**
+ * 使用验证过的数值和单位进行转换。
+ * 这是真正的转换逻辑,不包含错误处理。
+ *
+ * @param value 温度值
+ * @param unit 单位(C 或 F)
+ * @return 始终返回 true(如果调用说明数据有效)
+ */
+ public static boolean convertWithValidatedInput(double value, String unit) {
+ if (unit.startsWith("C")) {
+ double f = celsiusToFahrenheit(value);
+ System.out.printf("%.2f °C = %.2f °F%n", value, f);
+ } else if (unit.startsWith("F")) {
+ double c = fahrenheitToCelsius(value);
+ System.out.printf("%.2f °F = %.2f °C%n", value, c);
+ }
+ return true;
+ }
+
+ /**
+ * 处理单个温度转换(命令行/文件模式用,宽松验证)。
+ *
+ * @param input 温度输入字符串,格式:"数值 单位",例如 "36.6 C"
+ * @return 转换成功返回true,失败返回false
+ */
+ public static boolean convertSingleTemperature(String input) {
+ input = input.trim();
+
+ // 检查输入是否为空
+ if (input.isEmpty()) {
+ return false;
+ }
+
+ // 检查粘连单位并自动分离
+ String[] adjacent = extractAdjacent(input);
+ if (adjacent != null) {
+ try {
+ return convertWithValidatedInput(Double.parseDouble(adjacent[0]), adjacent[1]);
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ // 按空白字符分割输入字符串
+ String[] parts = input.split("\\s+");
+
+ try {
+ double value = Double.parseDouble(parts[0]);
+ // 如果没有单位,在命令行/文件模式中仍然尝试转换(宽松模式)
+ // 但在交互模式中会被 analyzeAndSuggestFix 拒绝
+ String unit = (parts.length > 1) ? parts[1].toUpperCase() : "C";
+
+ if (unit.startsWith("C")) {
+ double f = celsiusToFahrenheit(value);
+ System.out.printf("%.2f °C = %.2f °F%n", value, f);
+ } else if (unit.startsWith("F")) {
+ double c = fahrenheitToCelsius(value);
+ System.out.printf("%.2f °F = %.2f °C%n", value, c);
+ } else {
+ return false;
+ }
+ return true;
+
+ } catch (NumberFormatException e) {
+ return false;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ /**
+ * 从文件中批量读取温度数据并进行转换。
+ * 文件中每一行包含一个温度及其单位。
+ *
+ * @param filename 文件路径
+ */
+ public static void convertFromFile(String filename) {
+ File file = new File(filename);
+
+ if (!file.exists()) {
+ System.out.println("文件不存在:" + filename);
+ return;
+ }
+
+ try {
+ Scanner fileScanner = new Scanner(file);
+ int lineNum = 0;
+ int successCount = 0;
+
+ System.out.println("从文件读取温度数据:" + filename);
+ System.out.println("========================================");
+
+ while (fileScanner.hasNextLine()) {
+ lineNum++;
+ String line = fileScanner.nextLine();
+
+ // 跳过空行和注释行(以#开头)
+ if (line.trim().isEmpty() || line.trim().startsWith("#")) {
+ continue;
+ }
+
+ System.out.print("第 " + lineNum + " 行:");
+ if (convertSingleTemperature(line)) {
+ successCount++;
+ }
+ }
+
+ System.out.println("========================================");
+ System.out.println("处理完成:共处理 " + lineNum + " 行,成功转换 " + successCount + " 条。");
+
+ fileScanner.close();
+
+ } catch (FileNotFoundException e) {
+ System.out.println("无法打开文件:" + filename);
+ }
+ }
+
+ /**
+ * 交互式模式:提示用户输入温度进行转换,使用智能诊断。
+ */
+ public static void interactiveMode() {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.println("========================================");
+ System.out.println("温度转换器 - 交互式模式");
+ System.out.println("========================================");
+ System.out.println("请输入要转换的温度与单位(例如 36.6 C 或 97 F)");
+ System.out.println("输入 'quit' 或 'exit' 退出程序");
+ System.out.println("========================================");
+
+ while (true) {
+ System.out.print("> ");
+ String input = scanner.nextLine();
+
+ if (input.equalsIgnoreCase("quit") || input.equalsIgnoreCase("exit")) {
+ System.out.println("程序退出。");
+ break;
+ }
+
+ // 在交互模式中使用智能诊断
+ if (!analyzeAndSuggestFix(input, true)) {
+ // 诊断方法已经打印了具体的错误信息
+ }
+ }
+
+ scanner.close();
+ }
+
+ /**
+ * 显示使用说明。
+ */
+ public static void showUsage() {
+ System.out.println("温度转换器 - 使用说明");
+ System.out.println("========================================");
+ System.out.println("用法1(命令行参数模式):");
+ System.out.println(" java TemperatureConverter_PytoJava <温度> <单位>");
+ System.out.println(" 例如:java TemperatureConverter_PytoJava 36.6 C");
+ System.out.println();
+ System.out.println("用法2(批量转换模式):");
+ System.out.println(" java TemperatureConverter_PytoJava <文件路径>");
+ System.out.println(" 例如:java TemperatureConverter_PytoJava temperatures.txt");
+ System.out.println(" 文件格式:每行一条温度数据,格式为 '温度 单位'");
+ System.out.println();
+ System.out.println("用法3(交互式模式):");
+ System.out.println(" java TemperatureConverter_PytoJava");
+ System.out.println(" 然后按提示输入温度数据");
+ System.out.println("========================================");
+ }
+
+ /**
+ * 程序入口主方法。
+ * 支持三种模式:
+ * 1. 命令行参数模式:java TemperatureConverter_PytoJava 36.6 C
+ * 2. 文件批量转换:java TemperatureConverter_PytoJava temperatures.txt
+ * 3. 交互式模式:java TemperatureConverter_PytoJava
+ *
+ * @param args 命令行参数
+ */
+ public static void main(String[] args) {
+ if (args.length == 0) {
+ // 交互式模式
+ interactiveMode();
+ } else if (args.length == 1) {
+ // 检查是否为文件路径(包含.txt或其他扩展名,或者是一个存在的文件)
+ File file = new File(args[0]);
+ if (file.exists() && file.isFile()) {
+ // 文件批量转换模式
+ convertFromFile(args[0]);
+ } else if (args[0].equalsIgnoreCase("-h") || args[0].equalsIgnoreCase("--help")) {
+ // 显示帮助信息
+ showUsage();
+ } else {
+ // 可能是单个温度但缺少单位,默认使用摄氏度
+ System.out.println("处理输入:" + args[0]);
+ convertSingleTemperature(args[0]);
+ }
+ } else if (args.length == 2) {
+ // 命令行参数模式:温度和单位
+ convertSingleTemperature(args[0] + " " + args[1]);
+ } else {
+ showUsage();
+ }
+ }
+}
diff --git a/W1-梁凯雄-202402050120/程序运行输出文本.txt b/W1-梁凯雄-202402050120/程序运行输出文本.txt
new file mode 100644
index 0000000..98cd6bd
--- /dev/null
+++ b/W1-梁凯雄-202402050120/程序运行输出文本.txt
@@ -0,0 +1,34 @@
+ 请输入数值(如 36.6, 100 等)
+ 示例:36.6 C
+> 36.6c
+? 已自动纠正输入:'36.6c' → '36.6 C'
+36.60 °C = 97.88 °F
+> 36.6f
+? 已自动纠正输入:'36.6f' → '36.6 F'
+36.60 °F = 2.56 °C
+> 36.6
+?? 缺少温度单位!
+ 请指定 C(摄氏度)或 F(华氏度)
+ 示例:36.6 C 或 36.6 F
+> 36.6 C
+36.60 °C = 97.88 °F
+> 97f
+? 已自动纠正输入:'97f' → '97 F'
+97.00 °F = 36.11 °C
+> 97 f
+97.00 °F = 36.11 °C
+PS D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject> java TemperatureConverter temperatures.txt
+从文件读取温度数据:temperatures.txt
+========================================
+第 6 行:36.60 °C = 97.88 °F
+第 7 行:37.50 °C = 99.50 °F
+第 10 行:25.00 °C = 77.00 °F
+第 11 行:30.00 °C = 86.00 °F
+第 14 行:98.60 °F = 37.00 °C
+第 15 行:77.00 °F = 25.00 °C
+第 18 行:0.00 °C = 32.00 °F
+第 19 行:100.00 °C = 212.00 °F
+第 20 行:32.00 °F = 0.00 °C
+第 21 行:212.00 °F = 100.00 °C
+========================================
+处理完成:共处理 21 行,成功转换 10 条。
\ No newline at end of file