diff --git a/w1-张思渊-202401070104/README.txt b/w1-张思渊-202401070104/README.txt new file mode 100644 index 0000000..b2052de --- /dev/null +++ b/w1-张思渊-202401070104/README.txt @@ -0,0 +1,16 @@ +编译 +javac TemperatureConverter.java + +运行 +1. 交互模式 (默认) +启动后手动输入温度(如 36.6 C),输入 quit 退出。 +java TemperatureConverter + +2. 命令行参数模式 +直接转换单个数值,无需进入交互界面。 +java TemperatureConverter 36.6 C + +3. 文件批量模式 +读取文本文件(每行格式:数值 单位)并批量输出结果。 +java TemperatureConverter Temperaturedata.txt +提示:确保 Temperaturedata.txt 文件位于当前目录下。 \ No newline at end of file diff --git a/w1-张思渊-202401070104/TemperatureConverter.class b/w1-张思渊-202401070104/TemperatureConverter.class new file mode 100644 index 0000000..442b6f3 Binary files /dev/null and b/w1-张思渊-202401070104/TemperatureConverter.class differ diff --git a/w1-张思渊-202401070104/TemperatureConverter.java b/w1-张思渊-202401070104/TemperatureConverter.java new file mode 100644 index 0000000..7b24ea9 --- /dev/null +++ b/w1-张思渊-202401070104/TemperatureConverter.java @@ -0,0 +1,145 @@ +//¶תʾjava +//֧϶(C)뻪϶(F)֮以ת + +//ܣ +// 1. ģʽ (Ĭ) +// 2. вģʽ (java TemperatureConverter 36.6 C) +// 3. ļģʽ (java TemperatureConverterdata.txt) + +import java.util.Scanner; +import java.io.File; +import java.io.FileNotFoundException; + +public class TemperatureConverter { + + public static double celsius_to_fahrenheit (double c) { + /*϶תΪ϶ȡ + :c (float): ¶ + :float: Ӧ϶*/ + return c * 9.0 / 5.0 + 32.0; + } + + + public static double fahrenheit_to_celsius (double f) { + /*϶תΪ϶ȡ + :f (float): ¶ + :float: Ӧ¶*/ + return (f - 32.0) * 5.0 / 9.0; + } + + + public static void processLine(String s) { + s=s.trim(); + + if (s.isEmpty()){ + System.out.println("Ϊգ˳"); + return; + } + + + String[] parts=s.split("\\s+"); + + try{ + if (parts.length < 2) { + System.out.println("ʧܣ밴ʾֵ뵥λ磺36.6 C"); + return; // ֱӽִֹ + } + //ûֵ֣뵥λ + double value = Double.parseDouble(parts[0]); + String unit = parts[1].toUpperCase(); + + if (unit.equals("C")) { + //϶תΪ϶ + double f = celsius_to_fahrenheit(value); + System.out.println(value + " C = "+ String.format("%.2f",f)+" F"); + } else if (unit.equals("F")) { + //ӻ϶תΪ϶ + double c = fahrenheit_to_celsius(value); + System.out.println(value + " F = "+ String.format("%.2f",c)+" C"); + } else { + System.out.println("δ֪λʹ C F"); + } + + } catch (NumberFormatException e) { + System.out.println("ʧܣ밴ʾֵ뵥λ磺36.6 C"); + } + } + public static void main(String[] args) { + + // ================= ģʽ 1: вģʽ ================= + // ÷: java TemperatureConverter 36.6 C + if (args.length == 2) { + String inputLine = args[0] + " " + args[1]; + // ֱӴһУѭ + processLine(inputLine); + return; // + } + + // ================= ģʽ 2: ļģʽ ================= + // ÷: java TemperatureConverter temps.txt + if (args.length == 1) { + String fileName = args[0]; + File file = new File(fileName); + + if (!file.exists()) { + System.err.println(": Ҳļ " + fileName); + System.err.println("ȷļڵǰĿ¼£: java TemperatureConverter temps.txt"); + return; + } + + if (!file.isFile()) { + System.err.println(": " + fileName + " һЧļ"); + return; + } + + System.out.println(">>> ʼļ [" + fileName + "] ȡ..."); + + Scanner fileScanner = null; + try { + fileScanner = new Scanner(file); + int lineCount = 0; + while (fileScanner.hasNextLine()) { + String line = fileScanner.nextLine(); + // У˳ + if (line.trim().isEmpty()) continue; + + processLine(line); + lineCount++; + } + System.out.println(">>> ɣȡ " + lineCount + " ݡ"); + + } catch (FileNotFoundException e) { + // ǰ existsԷһ + System.err.println("ϵͳ: ޷ȡļ"); + } finally { + if (fileScanner != null) { + fileScanner.close(); + } + } + return; // + } + + // ================= ģʽ 3: ģʽ (Ĭ) ================= + // ÷: java TemperatureConverter + Scanner scanner = new Scanner(System.in); + System.out.println("=== ¶ת (ģʽ) ==="); + // ʾû룬ʽʾ"36.6 C" "97 F" + System.out.println("Ҫת¶뵥λ 36.6 C 97 F"); + System.out.println(" 'quit' ˳"); + + while (true) { + System.out.print("> "); + String s = scanner.nextLine(); // s + + if (s.trim().equalsIgnoreCase("quit") || s.trim().equalsIgnoreCase("exit")) { + System.out.println("˳"); + break; + } + + // ͳһĴ + processLine(s); + } + + scanner.close(); + } +} \ No newline at end of file diff --git a/w1-张思渊-202401070104/Temperaturedata.txt b/w1-张思渊-202401070104/Temperaturedata.txt new file mode 100644 index 0000000..5de2ef7 --- /dev/null +++ b/w1-张思渊-202401070104/Temperaturedata.txt @@ -0,0 +1,5 @@ +34 C +100 F +0 C + +23 H \ No newline at end of file diff --git a/w1-张思渊-202401070104/ai协作.txt b/w1-张思渊-202401070104/ai协作.txt new file mode 100644 index 0000000..b06ddab --- /dev/null +++ b/w1-张思渊-202401070104/ai协作.txt @@ -0,0 +1,8 @@ +AI协作记录 + +本次作业通过三轮迭代完成Java温度转换器开发。 +需求解析:询问作业加分项含义,AI解释了命令行参数与文件批量处理的逻辑,并提供了语法映射表。 +代码重构:请求在保留原变量名基础上增加功能。AI建议提取processLine方法统一处理逻辑,避免代码重复,实现了交互、命令行、文件三种模式。 +Bug修复:针对批量输出换行问题,AI指出需统一使用println并确保每个分支显式换行,优化了空行跳过逻辑。 + +最终代码结构清晰,健壮性显著提升,完美满足所有评分标准。 \ No newline at end of file diff --git a/w1-张思渊-202401070104/程序运行截图.png b/w1-张思渊-202401070104/程序运行截图.png new file mode 100644 index 0000000..4e65cf9 Binary files /dev/null and b/w1-张思渊-202401070104/程序运行截图.png differ