diff --git a/w1/AI协助记录 b/w1/AI协助记录 new file mode 100644 index 0000000..f118c3d --- /dev/null +++ b/w1/AI协助记录 @@ -0,0 +1,30 @@ +使用的 Prompt +1. 如何修改原来的文件名并实现提交到git? +2. "如何把上述Python温度转换程序改写为Java?"其中包括对各行代码作用的提问 +3. "Java代码怎么写注释?" +4. "命令行参数模式怎么实现?" +5. "批量转换模式怎么从文件读取?" +6. "代码报错编码GBK的不可映射字符怎么解决?" +7. "运行结果怎么合并成一张截图?" +8. "README.md怎么写?"是什么,作用是什么 +AI 给出的帮助 +1. Git 相关 +帮助解决了文件夹重命名和文件冲突问题 +2. Java 代码编写 +提供了 Python 到 Java 的语法转换指导 +讲解了 Java 的类、方法、变量定义规则 +指导了 Scanner 类的使用(读取用户输入) +解释了 try-catch 异常处理的用法 +帮助解决了编码 GBK 乱码问题(-encoding UTF-8) +3. 功能实现 +交互模式:用 Scanner 读取用户输入,根据单位选择转换公式 +命令行参数模式:通过 String[] args 接收参数,支持 java TemperatureConverter 36.6 C +批量转换模式:用 Scanner 读取文件,跳过空行 +4. 代码优化 +建议将重复的转换代码提取为 convertAndPrint 方法 +统一了错误处理,避免代码重复 +规范了注释格式(@param、@return) +5. 作业提交 +指导了 README.md 的写法(包含编译命令、运行方法、使用示例) +帮助解决了运行结果截图的问题(用 Word 合并三张图) + diff --git a/w1/README.md b/w1/README.md new file mode 100644 index 0000000..f085542 --- /dev/null +++ b/w1/README.md @@ -0,0 +1,20 @@ +# 温度转换器 +## 编译方法 +```bash +javac TemperatureConverter.java +``` +## 运行命令 +### 1.交互模式(Python改编) +```bash +java TemperatureConverter +``` +程序会提示输入,例如:'36.6 C'或'100 F' +### 2.命令行参数模式 +```bash +java TemperatureConverter 36.6 C +java TemperatureConverter 100 F +``` +### 3.批量文件转换模式 +```bash +jave TemperatureConverter -f input.txt +``` \ No newline at end of file diff --git a/w1/TemperatureConverter.java b/w1/TemperatureConverter.java new file mode 100644 index 0000000..8e2d7a3 --- /dev/null +++ b/w1/TemperatureConverter.java @@ -0,0 +1,141 @@ +// ¶תʾJava +// ֧϶(C)뻪϶(F)֮以ת +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; +public class TemperatureConverter { + /** + * ϶תΪ϶ + * ʽ϶=϶*9/5+32 + * @param c ¶ + * @return Ӧ϶ + */ + public static double celsiusToFahrenheit(double c) { + return c * 9.0 / 5.0 + 32.0; + } + /** + * ϶תΪ϶ + * ʽ϶=϶-32*5/9 + * @param f ¶ + * @return Ӧ¶ + */ + public static double fahrenheitToCelsius(double f) { + return (f - 32.0) * 5.0 / 9.0; + } + /** + * תӡ + */ + public static void convertAndPrint(String valueStr,String unitStr) { + try { + double value = Double.parseDouble(valueStr); + String unit = unitStr.toUpperCase(); + if (unit.startsWith("C")) { + // ϶תΪ϶ + double result = celsiusToFahrenheit(value); + System.out.printf("%.2f C = %.2f F%n", value, result); + } else if (unit.startsWith("F")) { + // ӻ϶תΪ϶ + double result = fahrenheitToCelsius(value); + System.out.printf("%.2f F = %.2f C%n", value, result); + } else { + System.out.println("δ֪λʹ C F"); + } + } catch (NumberFormatException e) { + System.out.println("ʧܣ밴ʾֵ뵥λ磺36.6 C"); + } + } + /** + * ģʽPythonԭģ + */ + public static void interactiveMode() { + Scanner scanner = new Scanner(System.in); + // ʾû룬ʽʾ"36.6 C" "97 F" + System.out.print("Ҫת¶뵥λ 36.6 C 97 F"); + String inputLine = scanner.nextLine().trim(); + // ǷΪ + if (inputLine.isEmpty()) { + System.out.println("Ϊգ˳"); + scanner.close(); + return; + } + // ַָ + String[] parts =inputLine.split("\\s+"); + // ɷǷ㹻 + if (parts.length < 1) { + System.out.println("ʧܣ밴ʾֵ뵥λ磺36.6 C"); + scanner.close(); + return; + } + // ûֵ֣뵥λ + String valueStr = parts[0]; + String unitStr = (parts.length > 1) ? parts[1] : "C"; + // ͳһתӡ + convertAndPrint(valueStr,unitStr); + scanner.close(); + } + /** + * вģʽ + */ + public static void commandLineMode(String[] args) { + // ͳһתӡ + convertAndPrint(args[0],args[1]); + } + /** + * תģʽ + */ + public static void batchMode(String filename) { + try{ + // ȡļе¶ֵóʼֵΪ + Scanner fileScanner = new Scanner(new File(filename)); + System.out.println("ת"); + int lineNumber = 0; + // жȡ + while (fileScanner.hasNextLine()) { + lineNumber++; // +1 + String line = fileScanner.nextLine().trim(); + // + if (line.isEmpty()) { + continue; + } + String[] parts = line.split("\\s+"); + // ʽ + if (parts.length < 2) { + System.out.println(""+lineNumber+"иʽӦΪ¶ λ"); + continue; + } + System.out.print(""+lineNumber+"У"); + // ͳһתӡ + convertAndPrint(parts[0],parts[1]); + } + fileScanner.close(); + System.out.println("ȡ"); + } catch (FileNotFoundException e) { // ųļڵ + System.out.println("ļ"+filename+""); + } + } + /** + * main-ݲѡģʽ + */ + public static void main(String[] args) { + if (args.length == 0) { + // ģʽPythonԴת + interactiveMode(); + } else if (args.length == 2 && args[0].equals("-f")) { + // תģʽ-f + batchMode(args[1]); + } else if (args.length == 2) { + // вģʽ + commandLineMode(args); + } else { + // ʽ + System.out.println("󣺲ʽȷ"); + System.out.println("ʹ÷"); + System.out.println("1. ģʽjava TemperatureConverter"); + System.out.println("2. ģʽjava TemperatureConverter <¶ֵ> <λ>"); + System.out.println(" ʾjava TemperatureConverter 36.6 C"); + System.out.println("3. ģʽjava TemperatureConverter -f <ļ>"); + System.out.println(" ʾjava TemperatureConverter -f input.txt"); + } + } +} + diff --git a/w1/input.txt b/w1/input.txt new file mode 100644 index 0000000..1ca6e2b --- /dev/null +++ b/w1/input.txt @@ -0,0 +1,9 @@ +36.6 C +100 F +0 C +212 F +32 F +-40 C +98.6 F +20 C +50 F \ No newline at end of file diff --git a/w1/运行结果.png b/w1/运行结果.png new file mode 100644 index 0000000..c694dff Binary files /dev/null and b/w1/运行结果.png differ