From 0e446bf97cc12344784e5cfaa632b04f886920c7 Mon Sep 17 00:00:00 2001 From: linhe Date: Tue, 10 Mar 2026 14:49:35 +0800 Subject: [PATCH] =?UTF-8?q?W1-=E6=9E=97=E9=B9=A4-202506050123?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 29 +++++ W1-林鹤-202506050123/.gitignore | 2 + W1-林鹤-202506050123/AI.md | 29 +++++ W1-林鹤-202506050123/README.md | 48 ++++++++ .../TemperatureConverter.java | 103 ++++++++++++++++++ 5 files changed, 211 insertions(+) create mode 100644 .gitignore create mode 100644 W1-林鹤-202506050123/.gitignore create mode 100644 W1-林鹤-202506050123/AI.md create mode 100644 W1-林鹤-202506050123/README.md create mode 100644 W1-林鹤-202506050123/TemperatureConverter.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..136b291 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# Created by https://gitignore.org +# Java.gitignore + +.idea/ + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* diff --git a/W1-林鹤-202506050123/.gitignore b/W1-林鹤-202506050123/.gitignore new file mode 100644 index 0000000..8289f4e --- /dev/null +++ b/W1-林鹤-202506050123/.gitignore @@ -0,0 +1,2 @@ +TemperatureConverter.py +example.txt diff --git a/W1-林鹤-202506050123/AI.md b/W1-林鹤-202506050123/AI.md new file mode 100644 index 0000000..47f3f19 --- /dev/null +++ b/W1-林鹤-202506050123/AI.md @@ -0,0 +1,29 @@ +# AI 使用记录 + +在此目录下使用 opencode 与 glm-4.6v-flash 模型。 + +## 格式说明 + +> (这是 opencode 所用模式) +> +> 这是用户输入 + +这是概括的 AI 输出。 + +## 对话内容 + +> (Plan) +> +> 将 TemperatureConverter.py 转换为同等的可运行的 java 文件。 + +给出了接下来要执行的步骤。 + +> (Build) +> +> You are in build mode now. Continue. + +正确输出了程序主体,但注释和 python 源文件不一致。 + +> 如何运行这个程序? + +给出了正确的编译和运行命令。 diff --git a/W1-林鹤-202506050123/README.md b/W1-林鹤-202506050123/README.md new file mode 100644 index 0000000..8606ca4 --- /dev/null +++ b/W1-林鹤-202506050123/README.md @@ -0,0 +1,48 @@ +# 温度转换器 + +## 编译 + +```console +$ javac TemperatureConverter.java +``` + +应输出 `TemperatureConverter.class` 文件。 + +## 使用说明 + +未传入参数时,程序将提示输入值。 + +请按**数字+空格+单位**(如 `36.6 C`)的格式输入,程序会将温度转换后输出。单位 `C` 代表摄氏度,`F` 代表华氏度。未输入单位时,程序将默认输入为摄氏度。 + +```console +$ java TemperatureConverter +请输入要转换的温度与单位(例如 36.6 C 或 97 F):36.6 +36.60 °C = 97.88 °F +``` + +当有参数传入时,程序**仅会**将**第一个**参数解析为温度输入,并将其转换后输出。 + +```console +$ java TemperatureConverter "36.6 F" "36.6 C" +36.60 °F = 2.56 °C +``` + +若参数为有效的文件路径,程序将解析指定文件中有内容的行,并将每行视为一个温度进行转换。例如以下文件内容: + +```plaintext +12 C +36 F +haha + +36.6 F +``` + +输出为: + +```console +$ java TemperatureConverter example.txt +12.00 °C = 53.60 °F +36.00 °F = 2.22 °C +输入 "haha" 解析失败,请按示例输入数值与单位,例如:36.6 C +36.60 °F = 2.56 °C +``` diff --git a/W1-林鹤-202506050123/TemperatureConverter.java b/W1-林鹤-202506050123/TemperatureConverter.java new file mode 100644 index 0000000..f1f5b49 --- /dev/null +++ b/W1-林鹤-202506050123/TemperatureConverter.java @@ -0,0 +1,103 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.stream.Stream; + +/** + * 温度转换器程序(Java) + *
+ * 支持摄氏度(C)与华氏度(F)之间互转 + */ +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; + } + + /** + * 将输入字符串解析为温度并通过 `println` 输出 + * + * @param input 形如 "36.6 C" 的输入 + */ + public static void convertTemperatureInputAndOutput(String input) { + try { + String[] parts = input.trim().split("\\s+"); + + // 允许用户输入两个部分:数值与单位 + double value = Double.parseDouble(parts[0]); + 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 { + System.out.println("未知单位,请使用 C 或 F。"); + } + } catch (Exception e) { + System.out.printf("输入 \"%s\" 解析失败,请按示例输入数值与单位,例如:36.6 C\n", input); + } + } + + /** + * + */ + public static void handleFile(String filename) throws IOException { + try (Stream lines = Files.lines(Paths.get(filename))) { + lines.filter(it -> !it.trim().isEmpty()).forEach(TemperatureConverter::convertTemperatureInputAndOutput); + } + } + + /** + * 程序入口 + * + * @param args 传入参数
+ * 仅解析传入的第一个参数。首先尝试将其解析为文件路径,否则视为温度格式输入。
+ * 没有参数传入时,提示用户输入 + */ + public static void main(String[] args) { + if (args.length >= 1) { + String cliParam = args[0]; + + if (Files.isRegularFile(Paths.get(cliParam))) { + try { + handleFile(cliParam); + } catch (IOException e) { + System.out.printf("在处理文件 \"%s\" 时失败:%s", cliParam, e); + } + } else { + convertTemperatureInputAndOutput(cliParam); + } + + // 有参数传入时,不再提示用户输入 + return; + } + + // 提示用户输入,格式示例:"36.6 C" 或 "97 F" + System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); + String input = System.console().readLine(); + + if (input == null || input.trim().isEmpty()) { + System.out.println("输入为空,程序退出。"); + } else { + convertTemperatureInputAndOutput(input); + } + } +} \ No newline at end of file