Browse Source

feat(W1-杜雨萌-202506050328): add zuoye

main
unknown 1 month ago
parent
commit
549b595a21
  1. 10
      W1-杜雨萌-202506050328/AI协助.txt
  2. 22
      W1-杜雨萌-202506050328/README.md
  3. 136
      W1-杜雨萌-202506050328/TemperatureConverter.java
  4. BIN
      W1-杜雨萌-202506050328/运行结果.png

10
W1-杜雨萌-202506050328/AI协助.txt

@ -0,0 +1,10 @@
Prompt 记录:
"将下面的 Python 温度转换程序改写为等效的 Java 程序,保留注释并保证功能一致。"
"添加命令行参数支持作为加分项,例如 java TemperatureConverter 36.6 C"
"增加批量文件处理功能,从文件读取多行温度并输出结果"
"帮我创建一个完整的 README.md,包含编译运行命令和示例"
AI 帮助总结:
通过AI协助完成了Python到Java的代码移植,自动转换了语法结构,AI还帮助实现了两种更复杂的功能,并生成了完整的文档说明。
把Python代码翻译成了Java,自动处理了两种语言不一样的地方,加上了命令行参数和批量处理两个功能
会写README文档,学会了它是什么。

22
W1-杜雨萌-202506050328/README.md

@ -0,0 +1,22 @@
# 温度转换器 (Temperature Converter)
## 编译
打开命令行终端,进入程序所在目录,执行以下命令:
```bash
javac TemperatureConverter.java
```
## 运行
### 模式一:交互模式(推荐初学者使用)
这是最基础的模式,程序会提示你输入温度:
```bash
java TemperatureConverter
```
### 模式二:命令行参数模式(加分功能)
直接通过命令参数传入温度和单位:
```bash
java TemperatureConverter 数值 单位
```
### 模式三:批量文件模式(加分功能)
从文本文件中读取多行温度进行批量转换
```bash
java TemperatureConverter -f temperatures.txt
```

136
W1-杜雨萌-202506050328/TemperatureConverter.java

@ -0,0 +1,136 @@
import java.io.*;
import java.nio.file.*;
import java.util.*;
import java.util.stream.Stream;
/**
* 温度转换器 - 支持摄氏度(C)与华氏度(F)之间互转
* 对应Python原版TemperatureConverter.py
*
* 功能增强
* 1. 交互模式直接运行提示用户输入
* 2. 命令行参数模式java TemperatureConverter <数值> <单位>
* 3. 批量文件处理java TemperatureConverter -f <文件名>
*
* @author 移植自Python示例
*/
public class TemperatureConverter {
/**
* 将摄氏度转换为华氏度
*
* @param c 摄氏温度 (float)
* @return 对应的华氏温度 (float)
*/
public static float celsiusToFahrenheit(float c) {
return c * 9.0f / 5.0f + 32.0f;
}
/**
* 将华氏度转换为摄氏度
*
* @param f 华氏温度 (float)
* @return 对应的摄氏温度 (float)
*/
public static float fahrenheitToCelsius(float f) {
return (f - 32.0f) * 5.0f / 9.0f;
}
/**
* 解析并执行单个温度转换字符串输入
* @param input 格式如 "36.6 C" "97 F"
* @return 转换结果字符串或错误信息
*/
public static String convertSingle(String input) {
if (input == null || input.trim().isEmpty()) {
return "输入为空,跳过。";
}
String[] parts = input.trim().split("\\s+");
try {
float value = Float.parseFloat(parts[0]);
String unit = (parts.length > 1) ? parts[1].toUpperCase() : "C";
if (unit.startsWith("C")) {
float f = celsiusToFahrenheit(value);
return String.format("%.2f °C = %.2f °F", value, f);
} else if (unit.startsWith("F")) {
float c = fahrenheitToCelsius(value);
return String.format("%.2f °F = %.2f °C", value, c);
} else {
return "未知单位,请使用 C 或 F。";
}
} catch (NumberFormatException e) {
return "数值解析失败,请确保第一项是数字。";
}
}
/**
* 交互模式从标准输入读取一行并转换
*/
private static void interactiveMode() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要转换的温度与单位(例如 36.6 C 或 97 F):");
String line = scanner.nextLine();
String result = convertSingle(line);
System.out.println(result);
scanner.close();
}
/**
* 命令行参数模式直接使用参数转换
* @param args 两个参数数值 单位
*/
private static void argMode(String[] args) {
if (args.length < 1) {
System.out.println("错误:缺少参数。用法:java TemperatureConverter <数值> [单位]");
return;
}
// 将命令行参数拼接成标准输入格式
String input = String.join(" ", args);
String result = convertSingle(input);
System.out.println(result);
}
/**
* 批量文件模式读取文件每行进行转换并输出到控制台
* @param filename 文件名
*/
private static void batchMode(String filename) {
Path path = Paths.get(filename);
if (!Files.exists(path)) {
System.out.println("错误:文件 " + filename + " 不存在。");
return;
}
System.out.println("批量转换文件:" + filename);
try (Stream<String> lines = Files.lines(path)) {
lines.forEach(line -> {
String result = convertSingle(line);
System.out.println("输入: " + line + " -> " + result);
});
} catch (IOException e) {
System.out.println("读取文件时出错: " + e.getMessage());
}
}
/**
* 主程序入口
* 支持三种运行模式
* 1. 无参数交互模式
* 2. -f <文件>批量文件模式
* 3. 其他参数命令行参数模式
*/
public static void main(String[] args) {
if (args.length == 0) {
// 无参数:交互模式(原Python main行为)
interactiveMode();
} else if (args.length >= 2 && args[0].equals("-f")) {
// -f 文件名:批量文件模式(加分项)
batchMode(args[1]);
} else {
// 其他:视为命令行参数模式(加分项)
argMode(args);
}
}
}

BIN
W1-杜雨萌-202506050328/运行结果.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Loading…
Cancel
Save