Browse Source

上传文件至 'W1-WangHe-202421110304'

第一次作业
main
WangHe 1 month ago
parent
commit
1fd239f266
  1. 21
      W1-WangHe-202421110304/AI_help.txt
  2. 28
      W1-WangHe-202421110304/README.md
  3. 134
      W1-WangHe-202421110304/TemperatureConverter.java
  4. 35
      W1-WangHe-202421110304/temps.txt

21
W1-WangHe-202421110304/AI_help.txt

@ -0,0 +1,21 @@
请将以下 Python 温度转换程序改写为功能完全等效的 Java 程序。
要求:
1. 保留所有原有功能和逻辑(包括默认单位为摄氏、输入解析、错误处理等)
2. 保留并适当扩展中文注释(方法功能、参数说明、主要逻辑说明)
3. 代码风格清晰、符合 Java 常见规范(命名、缩进、异常处理等)
4. 使用 Scanner 处理交互输入
5. 输出格式统一美观(建议使用 printf,保留两位小数,带 °C/°F 符号)
可选加分项(按优先级排序):
- 支持命令行参数模式(例:java TemperatureConverter 36.6 C)
- 支持批量文件转换(例:java TemperatureConverter input.txt,每行一条温度数据)
- 在批量模式中添加简易控制台进度条(覆盖刷新式,显示百分比和进度字符)
额外输出要求:
- 完整的 Java 源代码(文件名建议:TemperatureConverter.java)
- 一个规范的 README.md 文件,包含:
- 项目简介
- 编译 & 运行命令(考虑 Windows 编码问题)
- 三种使用方式的详细示例(交互、单次参数、批量文件)
- 典型输入输出样例

28
W1-WangHe-202421110304/README.md

@ -0,0 +1,28 @@
# 温度转换器(Java 增强版)
一个简单但功能完备的控制台温度转换工具,支持 **摄氏度 (℃) ↔ 华氏度 (℉)** 互转。
支持 **三种使用方式**
1. 交互式(命令行逐行输入)
2. 单次命令行参数(适合快速转换)
3. 批量文件处理(适合一次性转换多条数据)
## 功能特性
- 支持默认单位(无单位时视为 ℃)
- 保留两位小数输出
- 友好错误提示(非法数值、未知单位、空行等)
- 支持负数温度
- UTF-8 友好(中文提示无乱码)
## 编译与运行
需要 **JDK 8 或更高版本**(推荐 JDK 11+ / 17 / 21)
```bash
# 1. 编译
javac TemperatureConverter.java
# 2. 运行(推荐显式指定 UTF-8 编码,避免 Windows cmd 乱码)
java -Dfile.encoding=UTF-8 TemperatureConverter

134
W1-WangHe-202421110304/TemperatureConverter.java

@ -0,0 +1,134 @@
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
/**
* 温度转换器示例程序Java - 增强版
* 支持摄氏度(C) 华氏度(F) 互转
* 支持三种使用方式
* 1. 交互模式不带参数
* 2. 单次命令行参数模式java TemperatureConverter 36.6 C
* 3. 批量文件模式java TemperatureConverter input.txt
*/
public class TemperatureConverter {
/**
* 将摄氏度转换为华氏度
* 公式F = C × 9/5 + 32
*
* @param c 摄氏温度
* @return 华氏温度
*/
public static float celsiusToFahrenheit(float c) {
return c * 9.0f / 5.0f + 32.0f;
}
/**
* 将华氏度转换为摄氏度
* 公式C = (F - 32) × 5/9
*
* @param f 华氏温度
* @return 摄氏温度
*/
public static float fahrenheitToCelsius(float f) {
return (f - 32.0f) * 5.0f / 9.0f;
}
/**
* 解析单行温度字符串并返回转换结果字符串形式
*
* @param line 一行输入例如 "36.6 C" "98.6" "99 F"
* @return 转换结果字符串或错误信息
*/
public static String convertLine(String line) {
if (line == null || line.trim().isEmpty()) {
return null;
}
String[] parts = line.trim().split("\\s+");
float value;
String unit = "C"; // 默认摄氏
try {
value = Float.parseFloat(parts[0]);
if (parts.length > 1) {
unit = parts[1].trim().toUpperCase();
}
} catch (NumberFormatException e) {
return "格式错误: " + line;
}
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 "未知单位: " + line;
}
}
public static void main(String[] args) {
// 1. 命令行单次转换模式
if (args.length == 2) {
String input = args[0] + " " + args[1];
String result = convertLine(input);
if (result != null) {
System.out.println(result);
}
return;
}
// 2. 批量文件模式
if (args.length == 1) {
String filename = args[0];
System.out.println("正在处理文件: " + filename);
System.out.println("----------------------------------------");
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line;
int lineNum = 0;
while ((line = br.readLine()) != null) {
lineNum++;
String result = convertLine(line);
if (result != null) {
System.out.printf("第 %2d 行: %s%n", lineNum, result);
}
}
System.out.println("----------------------------------------");
System.out.println("处理完成,共读取 " + lineNum + " 行");
} catch (IOException e) {
System.err.println("无法读取文件: " + filename);
System.err.println(e.getMessage());
}
return;
}
// 3. 交互模式(无参数)
Scanner scanner = new Scanner(System.in);
System.out.println("温度转换器(支持 C / F)");
System.out.println("输入格式示例:36.6 C 或 98.6 F 或 23.5(默认C)");
System.out.println("输入空行或 Ctrl+C 退出\n");
while (true) {
System.out.print("> ");
String line = scanner.nextLine().trim();
if (line.isEmpty()) {
System.out.println("再见!");
break;
}
String result = convertLine(line);
if (result != null) {
System.out.println(result);
} else {
System.out.println("(已跳过空行)");
}
}
scanner.close();
}
}

35
W1-WangHe-202421110304/temps.txt

@ -0,0 +1,35 @@
input
36.6 C
98.6 F
0 C
32 F
100 C
212 F
-40 C
-40 F
25.5
37.2 c
101.3 f
abc
23.5 K
88.5
42.0 F
19.8C
output
36.60 °C → 97.88 °F
98.60 °F → 37.00 °C
0.00 °C → 32.00 °F
32.00 °F → 0.00 °C
100.00 °C → 212.00 °F
212.00 °F → 100.00 °C
-40.00 °C → -40.00 °F
-40.00 °F → -40.00 °C
25.50 °C → 77.90 °F (默认 C)
37.20 °C → 98.96 °F
101.30 °F → 38.50 °C
格式错误: abc
未知单位: 23.5 K
88.50 °C → 191.30 °F
42.00 °F → 5.56 °C
19.80 °C → 67.64 °F
Loading…
Cancel
Save