From 1f1a11dcf53646f4be650b01bbde32c7ba874b3d Mon Sep 17 00:00:00 2001 From: ZhengShiyi <1980003269@qq.com> Date: Fri, 13 Mar 2026 18:56:53 +0800 Subject: [PATCH] =?UTF-8?q?w1=E4=BD=9C=E4=B8=9A=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AI协助记录.txt => w1/AI协助记录.txt | 24 +- HelloWorld.java => w1/HelloWorld.java | 8 +- README.md => w1/README.md | 106 ++++---- .../TemperatureConverter.java | 240 +++++++++--------- temps.txt => w1/temps.txt | 10 +- 运行截图.png => w1/运行截图.png | Bin 6 files changed, 194 insertions(+), 194 deletions(-) rename AI协助记录.txt => w1/AI协助记录.txt (98%) rename HelloWorld.java => w1/HelloWorld.java (96%) rename README.md => w1/README.md (96%) rename TemperatureConverter.java => w1/TemperatureConverter.java (97%) rename temps.txt => w1/temps.txt (76%) rename 运行截图.png => w1/运行截图.png (100%) diff --git a/AI协助记录.txt b/w1/AI协助记录.txt similarity index 98% rename from AI协助记录.txt rename to w1/AI协助记录.txt index fd415f6..7f1e79e 100644 --- a/AI协助记录.txt +++ b/w1/AI协助记录.txt @@ -1,12 +1,12 @@ -核心 prompt : -1. 修复温度转换 Java 代码的空格分割问题; -2. 实现批量读取文件转换温度的功能; -3. 编写规范的 README.md 运行说明; -4. 指导命令行编译运行的正确步骤。 - -AI 的帮助: -1.修正了代码中 split ("") 的分割逻辑为 split ("\s+"),解决单位识别失败问题; -2.提供了完整的批量转换方法代码,实现从 temps.txt 批量处理温度; -3.整理了包含编译 / 运行命令、示例的 README.md 模板; -4.解决了编译报错、文件路径等问题; -5. 检查代码结构与语法错误,指出方法位置错误、括号不匹配等问题,让程序能正常编译运行。 +核心 prompt : +1. 修复温度转换 Java 代码的空格分割问题; +2. 实现批量读取文件转换温度的功能; +3. 编写规范的 README.md 运行说明; +4. 指导命令行编译运行的正确步骤。 + +AI 的帮助: +1.修正了代码中 split ("") 的分割逻辑为 split ("\s+"),解决单位识别失败问题; +2.提供了完整的批量转换方法代码,实现从 temps.txt 批量处理温度; +3.整理了包含编译 / 运行命令、示例的 README.md 模板; +4.解决了编译报错、文件路径等问题; +5. 检查代码结构与语法错误,指出方法位置错误、括号不匹配等问题,让程序能正常编译运行。 diff --git a/HelloWorld.java b/w1/HelloWorld.java similarity index 96% rename from HelloWorld.java rename to w1/HelloWorld.java index 0bca3e3..8b20ecc 100644 --- a/HelloWorld.java +++ b/w1/HelloWorld.java @@ -1,5 +1,5 @@ -public class HelloWorld { - public static void main(String[] args) { - System.out.println("Hello World!"); - } +public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello World!"); + } } \ No newline at end of file diff --git a/README.md b/w1/README.md similarity index 96% rename from README.md rename to w1/README.md index 5ff7ed2..93393e3 100644 --- a/README.md +++ b/w1/README.md @@ -1,54 +1,54 @@ -# 温度转换器(Java版) -## 功能说明 -实现摄氏度(C)和华氏度(F)互转,支持三种使用方式: -1. 交互式输入(控制台提示输入) -2. 命令行参数输入(加分项) -3. 批量转换(从文件读取多行温度,加分项) - -## 编译命令 -在代码所在目录执行: -```bash -javac -encoding UTF-8 TemperatureConverter.java - -## 运行命令 -方式 1:交互式运行(含批量转换) -```bash -java TemperatureConverter - - 先按提示输入单条温度(例如:36.6 C); - -程序自动读取同目录下 temps.txt 文件,批量转换所有行的温度。 - -方式 2:命令行参数运行 -```bash -java TemperatureConverter 36.6 C -# 或 -```bash -java TemperatureConverter 97 F - -## 运行示例 -示例 1:交互式 + 批量转换 -输入: -36.6 C -输出: -36.60 °C = 97.88 °F - -===== 批量转换开始 ===== -处理:36.6 C → 36.60 °C = 97.88 °F -处理:97 F → 97.00 °F = 36.11 °C -处理:100 C → 100.00 °C = 212.00 °F -处理:212 F → 212.00 °F = 100.00 °C -处理:25 C → 25.00 °C = 77.00 °F -处理:77 F → 77.00 °F = 25.00 °C -===== 批量转换结束 ===== - -示例 2:命令行转换华氏度到摄氏度 -输入命令:java TemperatureConverter 97 F输出:97.00 °F = 36.11 °C -批量转换说明 -1. 需在代码同目录下创建 temps.txt 文件; -2. 文件每行格式为「数值 单位」(例如:36.6 C); -3. 运行交互式模式时,程序自动执行批量转换。 - -注:批量转换所需的 temps.txt 文件因平台上传数量限制未单独上传,文件内容为: -36.6 C -97 F -100 C +# 温度转换器(Java版) +## 功能说明 +实现摄氏度(C)和华氏度(F)互转,支持三种使用方式: +1. 交互式输入(控制台提示输入) +2. 命令行参数输入(加分项) +3. 批量转换(从文件读取多行温度,加分项) + +## 编译命令 +在代码所在目录执行: +```bash +javac -encoding UTF-8 TemperatureConverter.java + +## 运行命令 +方式 1:交互式运行(含批量转换) +```bash +java TemperatureConverter + - 先按提示输入单条温度(例如:36.6 C); + -程序自动读取同目录下 temps.txt 文件,批量转换所有行的温度。 + +方式 2:命令行参数运行 +```bash +java TemperatureConverter 36.6 C +# 或 +```bash +java TemperatureConverter 97 F + +## 运行示例 +示例 1:交互式 + 批量转换 +输入: +36.6 C +输出: +36.60 °C = 97.88 °F + +===== 批量转换开始 ===== +处理:36.6 C → 36.60 °C = 97.88 °F +处理:97 F → 97.00 °F = 36.11 °C +处理:100 C → 100.00 °C = 212.00 °F +处理:212 F → 212.00 °F = 100.00 °C +处理:25 C → 25.00 °C = 77.00 °F +处理:77 F → 77.00 °F = 25.00 °C +===== 批量转换结束 ===== + +示例 2:命令行转换华氏度到摄氏度 +输入命令:java TemperatureConverter 97 F输出:97.00 °F = 36.11 °C +批量转换说明 +1. 需在代码同目录下创建 temps.txt 文件; +2. 文件每行格式为「数值 单位」(例如:36.6 C); +3. 运行交互式模式时,程序自动执行批量转换。 + +注:批量转换所需的 temps.txt 文件因平台上传数量限制未单独上传,文件内容为: +36.6 C +97 F +100 C 212 F \ No newline at end of file diff --git a/TemperatureConverter.java b/w1/TemperatureConverter.java similarity index 97% rename from TemperatureConverter.java rename to w1/TemperatureConverter.java index b644100..dda318a 100644 --- a/TemperatureConverter.java +++ b/w1/TemperatureConverter.java @@ -1,121 +1,121 @@ -import java.util.Scanner; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; - -/** - * 温度转换器程序(Java版) - * 支持摄氏度(C)与华氏度(F)之间互转 - * 支持三种输入方式: - * 1. 交互式输入(控制台提示输入) - * 2. 命令行参数(例如:java TemperatureConverter 36.6 C) - * 3. 批量转换(从temps.txt文件读取多行温度) - */ -public class TemperatureConverter { - - /** - * 将摄氏度转换为华氏度 - * @param c 摄氏温度(浮点数) - * @return 对应的华氏温度(浮点数) - */ - public static double celsiusToFahrenheit(double c) { - return c * 9.0 / 5.0 + 32.0; - } - - /** - * 将华氏度转换为摄氏度 - * @param f 华氏温度(浮点数) - * @return 对应的摄氏温度(浮点数) - */ - public static double fahrenheitToCelsius(double f) { - return (f - 32.0) * 5.0 / 9.0; - } - - /** - * 处理温度转换的核心逻辑 - * @param value 温度数值 - * @param unit 温度单位(C/F,不区分大小写) - */ - public static void convert(double value, String unit) { - String upperUnit = unit.toUpperCase(); - if (upperUnit.equals("C")) { - double f = celsiusToFahrenheit(value); - System.out.printf("%.2f °C = %.2f °F%n", value, f); - } else if (upperUnit.equals("F")) { - double c = fahrenheitToCelsius(value); - System.out.printf("%.2f °F = %.2f °C%n", value, c); - } else { - System.out.println("未知单位,请使用 C 或 F。"); - } - } - - /** - * 交互式输入模式(和Python原版一致) - */ - public static void interactiveMode() { - Scanner scanner = new Scanner(System.in); - System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); - String s = scanner.nextLine().trim(); - scanner.close(); - - if (s.isEmpty()) { - System.out.println("输入为空,程序退出。"); - return; - } - - try { - String[] parts = s.split("\\s+"); - double value = Double.parseDouble(parts[0]); - // 若用户只输数值,默认按摄氏度处理 - String unit = parts.length > 1 ? parts[1] : "C"; - convert(value, unit); - } catch (Exception e) { - System.out.println("输入解析失败,请按示例输入数值与单位,例如:36.6 C"); - } - } - - /** - * 批量转换:从文件读取多行温度并输出结果(加分项) - * @param filePath 文件路径(每行格式:数值 单位,例如 36.6 C) - */ - public static void batchConvert(String filePath) { - try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { - String line; - System.out.println("\n===== 批量转换开始 ====="); - while ((line = br.readLine()) != null) { - String trimLine = line.trim(); - // 跳过空行 - if (trimLine.isEmpty()) continue; - try { - String[] parts = trimLine.split("\\s+"); - double value = Double.parseDouble(parts[0]); - String unit = parts.length > 1 ? parts[1] : "C"; - System.out.print("处理:" + line + " → "); - convert(value, unit); - } catch (Exception e) { - System.out.println("行「" + line + "」格式错误,跳过"); - } - } - System.out.println("===== 批量转换结束 =====\n"); - } catch (IOException e) { - System.out.println("\n读取文件失败:找不到 " + filePath + " 文件(请确认文件在同目录下)\n"); - } - } - - public static void main(String[] args) { - // 优先处理命令行参数模式(加分项) - if (args.length >= 2) { - try { - double value = Double.parseDouble(args[0]); - String unit = args[1]; - convert(value, unit); - } catch (Exception e) { - System.out.println("命令行参数解析失败!示例用法:java TemperatureConverter 36.6 C"); - } - } else { - // 无命令行参数则进入交互式模式 + 批量转换 - interactiveMode(); - batchConvert("temps.txt"); - } - } +import java.util.Scanner; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; + +/** + * 温度转换器程序(Java版) + * 支持摄氏度(C)与华氏度(F)之间互转 + * 支持三种输入方式: + * 1. 交互式输入(控制台提示输入) + * 2. 命令行参数(例如:java TemperatureConverter 36.6 C) + * 3. 批量转换(从temps.txt文件读取多行温度) + */ +public class TemperatureConverter { + + /** + * 将摄氏度转换为华氏度 + * @param c 摄氏温度(浮点数) + * @return 对应的华氏温度(浮点数) + */ + public static double celsiusToFahrenheit(double c) { + return c * 9.0 / 5.0 + 32.0; + } + + /** + * 将华氏度转换为摄氏度 + * @param f 华氏温度(浮点数) + * @return 对应的摄氏温度(浮点数) + */ + public static double fahrenheitToCelsius(double f) { + return (f - 32.0) * 5.0 / 9.0; + } + + /** + * 处理温度转换的核心逻辑 + * @param value 温度数值 + * @param unit 温度单位(C/F,不区分大小写) + */ + public static void convert(double value, String unit) { + String upperUnit = unit.toUpperCase(); + if (upperUnit.equals("C")) { + double f = celsiusToFahrenheit(value); + System.out.printf("%.2f °C = %.2f °F%n", value, f); + } else if (upperUnit.equals("F")) { + double c = fahrenheitToCelsius(value); + System.out.printf("%.2f °F = %.2f °C%n", value, c); + } else { + System.out.println("未知单位,请使用 C 或 F。"); + } + } + + /** + * 交互式输入模式(和Python原版一致) + */ + public static void interactiveMode() { + Scanner scanner = new Scanner(System.in); + System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); + String s = scanner.nextLine().trim(); + scanner.close(); + + if (s.isEmpty()) { + System.out.println("输入为空,程序退出。"); + return; + } + + try { + String[] parts = s.split("\\s+"); + double value = Double.parseDouble(parts[0]); + // 若用户只输数值,默认按摄氏度处理 + String unit = parts.length > 1 ? parts[1] : "C"; + convert(value, unit); + } catch (Exception e) { + System.out.println("输入解析失败,请按示例输入数值与单位,例如:36.6 C"); + } + } + + /** + * 批量转换:从文件读取多行温度并输出结果(加分项) + * @param filePath 文件路径(每行格式:数值 单位,例如 36.6 C) + */ + public static void batchConvert(String filePath) { + try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { + String line; + System.out.println("\n===== 批量转换开始 ====="); + while ((line = br.readLine()) != null) { + String trimLine = line.trim(); + // 跳过空行 + if (trimLine.isEmpty()) continue; + try { + String[] parts = trimLine.split("\\s+"); + double value = Double.parseDouble(parts[0]); + String unit = parts.length > 1 ? parts[1] : "C"; + System.out.print("处理:" + line + " → "); + convert(value, unit); + } catch (Exception e) { + System.out.println("行「" + line + "」格式错误,跳过"); + } + } + System.out.println("===== 批量转换结束 =====\n"); + } catch (IOException e) { + System.out.println("\n读取文件失败:找不到 " + filePath + " 文件(请确认文件在同目录下)\n"); + } + } + + public static void main(String[] args) { + // 优先处理命令行参数模式(加分项) + if (args.length >= 2) { + try { + double value = Double.parseDouble(args[0]); + String unit = args[1]; + convert(value, unit); + } catch (Exception e) { + System.out.println("命令行参数解析失败!示例用法:java TemperatureConverter 36.6 C"); + } + } else { + // 无命令行参数则进入交互式模式 + 批量转换 + interactiveMode(); + batchConvert("temps.txt"); + } + } } \ No newline at end of file diff --git a/temps.txt b/w1/temps.txt similarity index 76% rename from temps.txt rename to w1/temps.txt index a49118d..5db10ff 100644 --- a/temps.txt +++ b/w1/temps.txt @@ -1,6 +1,6 @@ -36.6 C -97 F -100 C -212 F -25 C +36.6 C +97 F +100 C +212 F +25 C 77 F \ No newline at end of file diff --git a/运行截图.png b/w1/运行截图.png similarity index 100% rename from 运行截图.png rename to w1/运行截图.png