diff --git a/AI协助记录.txt b/AI协助记录.txt new file mode 100644 index 0000000..be8dce7 --- /dev/null +++ b/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/README.md b/README.md index a8687f1..f189fac 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,512 @@ -# java - +# 温度转换器 - 完整使用指南 + +## 📋 目录 + +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/TemperatureConverter.java b/TemperatureConverter.java new file mode 100644 index 0000000..af5f366 --- /dev/null +++ b/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/程序运行输出文本.txt b/程序运行输出文本.txt new file mode 100644 index 0000000..98cd6bd --- /dev/null +++ b/程序运行输出文本.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