6 changed files with 194 additions and 194 deletions
@ -1,12 +1,12 @@ |
|||||
核心 prompt : |
核心 prompt : |
||||
1. 修复温度转换 Java 代码的空格分割问题; |
1. 修复温度转换 Java 代码的空格分割问题; |
||||
2. 实现批量读取文件转换温度的功能; |
2. 实现批量读取文件转换温度的功能; |
||||
3. 编写规范的 README.md 运行说明; |
3. 编写规范的 README.md 运行说明; |
||||
4. 指导命令行编译运行的正确步骤。 |
4. 指导命令行编译运行的正确步骤。 |
||||
|
|
||||
AI 的帮助: |
AI 的帮助: |
||||
1.修正了代码中 split ("") 的分割逻辑为 split ("\s+"),解决单位识别失败问题; |
1.修正了代码中 split ("") 的分割逻辑为 split ("\s+"),解决单位识别失败问题; |
||||
2.提供了完整的批量转换方法代码,实现从 temps.txt 批量处理温度; |
2.提供了完整的批量转换方法代码,实现从 temps.txt 批量处理温度; |
||||
3.整理了包含编译 / 运行命令、示例的 README.md 模板; |
3.整理了包含编译 / 运行命令、示例的 README.md 模板; |
||||
4.解决了编译报错、文件路径等问题; |
4.解决了编译报错、文件路径等问题; |
||||
5. 检查代码结构与语法错误,指出方法位置错误、括号不匹配等问题,让程序能正常编译运行。 |
5. 检查代码结构与语法错误,指出方法位置错误、括号不匹配等问题,让程序能正常编译运行。 |
||||
@ -1,5 +1,5 @@ |
|||||
public class HelloWorld { |
public class HelloWorld { |
||||
public static void main(String[] args) { |
public static void main(String[] args) { |
||||
System.out.println("Hello World!"); |
System.out.println("Hello World!"); |
||||
} |
} |
||||
} |
} |
||||
@ -1,54 +1,54 @@ |
|||||
# 温度转换器(Java版) |
# 温度转换器(Java版) |
||||
## 功能说明 |
## 功能说明 |
||||
实现摄氏度(C)和华氏度(F)互转,支持三种使用方式: |
实现摄氏度(C)和华氏度(F)互转,支持三种使用方式: |
||||
1. 交互式输入(控制台提示输入) |
1. 交互式输入(控制台提示输入) |
||||
2. 命令行参数输入(加分项) |
2. 命令行参数输入(加分项) |
||||
3. 批量转换(从文件读取多行温度,加分项) |
3. 批量转换(从文件读取多行温度,加分项) |
||||
|
|
||||
## 编译命令 |
## 编译命令 |
||||
在代码所在目录执行: |
在代码所在目录执行: |
||||
```bash |
```bash |
||||
javac -encoding UTF-8 TemperatureConverter.java |
javac -encoding UTF-8 TemperatureConverter.java |
||||
|
|
||||
## 运行命令 |
## 运行命令 |
||||
方式 1:交互式运行(含批量转换) |
方式 1:交互式运行(含批量转换) |
||||
```bash |
```bash |
||||
java TemperatureConverter |
java TemperatureConverter |
||||
- 先按提示输入单条温度(例如:36.6 C); |
- 先按提示输入单条温度(例如:36.6 C); |
||||
-程序自动读取同目录下 temps.txt 文件,批量转换所有行的温度。 |
-程序自动读取同目录下 temps.txt 文件,批量转换所有行的温度。 |
||||
|
|
||||
方式 2:命令行参数运行 |
方式 2:命令行参数运行 |
||||
```bash |
```bash |
||||
java TemperatureConverter 36.6 C |
java TemperatureConverter 36.6 C |
||||
# 或 |
# 或 |
||||
```bash |
```bash |
||||
java TemperatureConverter 97 F |
java TemperatureConverter 97 F |
||||
|
|
||||
## 运行示例 |
## 运行示例 |
||||
示例 1:交互式 + 批量转换 |
示例 1:交互式 + 批量转换 |
||||
输入: |
输入: |
||||
36.6 C |
36.6 C |
||||
输出: |
输出: |
||||
36.60 °C = 97.88 °F |
36.60 °C = 97.88 °F |
||||
|
|
||||
===== 批量转换开始 ===== |
===== 批量转换开始 ===== |
||||
处理:36.6 C → 36.60 °C = 97.88 °F |
处理:36.6 C → 36.60 °C = 97.88 °F |
||||
处理:97 F → 97.00 °F = 36.11 °C |
处理:97 F → 97.00 °F = 36.11 °C |
||||
处理:100 C → 100.00 °C = 212.00 °F |
处理:100 C → 100.00 °C = 212.00 °F |
||||
处理:212 F → 212.00 °F = 100.00 °C |
处理:212 F → 212.00 °F = 100.00 °C |
||||
处理:25 C → 25.00 °C = 77.00 °F |
处理:25 C → 25.00 °C = 77.00 °F |
||||
处理:77 F → 77.00 °F = 25.00 °C |
处理:77 F → 77.00 °F = 25.00 °C |
||||
===== 批量转换结束 ===== |
===== 批量转换结束 ===== |
||||
|
|
||||
示例 2:命令行转换华氏度到摄氏度 |
示例 2:命令行转换华氏度到摄氏度 |
||||
输入命令:java TemperatureConverter 97 F输出:97.00 °F = 36.11 °C |
输入命令:java TemperatureConverter 97 F输出:97.00 °F = 36.11 °C |
||||
批量转换说明 |
批量转换说明 |
||||
1. 需在代码同目录下创建 temps.txt 文件; |
1. 需在代码同目录下创建 temps.txt 文件; |
||||
2. 文件每行格式为「数值 单位」(例如:36.6 C); |
2. 文件每行格式为「数值 单位」(例如:36.6 C); |
||||
3. 运行交互式模式时,程序自动执行批量转换。 |
3. 运行交互式模式时,程序自动执行批量转换。 |
||||
|
|
||||
注:批量转换所需的 temps.txt 文件因平台上传数量限制未单独上传,文件内容为: |
注:批量转换所需的 temps.txt 文件因平台上传数量限制未单独上传,文件内容为: |
||||
36.6 C |
36.6 C |
||||
97 F |
97 F |
||||
100 C |
100 C |
||||
212 F |
212 F |
||||
@ -1,121 +1,121 @@ |
|||||
import java.util.Scanner; |
import java.util.Scanner; |
||||
import java.io.BufferedReader; |
import java.io.BufferedReader; |
||||
import java.io.FileReader; |
import java.io.FileReader; |
||||
import java.io.IOException; |
import java.io.IOException; |
||||
|
|
||||
/** |
/** |
||||
* 温度转换器程序(Java版) |
* 温度转换器程序(Java版) |
||||
* 支持摄氏度(C)与华氏度(F)之间互转 |
* 支持摄氏度(C)与华氏度(F)之间互转 |
||||
* 支持三种输入方式: |
* 支持三种输入方式: |
||||
* 1. 交互式输入(控制台提示输入) |
* 1. 交互式输入(控制台提示输入) |
||||
* 2. 命令行参数(例如:java TemperatureConverter 36.6 C) |
* 2. 命令行参数(例如:java TemperatureConverter 36.6 C) |
||||
* 3. 批量转换(从temps.txt文件读取多行温度) |
* 3. 批量转换(从temps.txt文件读取多行温度) |
||||
*/ |
*/ |
||||
public class TemperatureConverter { |
public class TemperatureConverter { |
||||
|
|
||||
/** |
/** |
||||
* 将摄氏度转换为华氏度 |
* 将摄氏度转换为华氏度 |
||||
* @param c 摄氏温度(浮点数) |
* @param c 摄氏温度(浮点数) |
||||
* @return 对应的华氏温度(浮点数) |
* @return 对应的华氏温度(浮点数) |
||||
*/ |
*/ |
||||
public static double celsiusToFahrenheit(double c) { |
public static double celsiusToFahrenheit(double c) { |
||||
return c * 9.0 / 5.0 + 32.0; |
return c * 9.0 / 5.0 + 32.0; |
||||
} |
} |
||||
|
|
||||
/** |
/** |
||||
* 将华氏度转换为摄氏度 |
* 将华氏度转换为摄氏度 |
||||
* @param f 华氏温度(浮点数) |
* @param f 华氏温度(浮点数) |
||||
* @return 对应的摄氏温度(浮点数) |
* @return 对应的摄氏温度(浮点数) |
||||
*/ |
*/ |
||||
public static double fahrenheitToCelsius(double f) { |
public static double fahrenheitToCelsius(double f) { |
||||
return (f - 32.0) * 5.0 / 9.0; |
return (f - 32.0) * 5.0 / 9.0; |
||||
} |
} |
||||
|
|
||||
/** |
/** |
||||
* 处理温度转换的核心逻辑 |
* 处理温度转换的核心逻辑 |
||||
* @param value 温度数值 |
* @param value 温度数值 |
||||
* @param unit 温度单位(C/F,不区分大小写) |
* @param unit 温度单位(C/F,不区分大小写) |
||||
*/ |
*/ |
||||
public static void convert(double value, String unit) { |
public static void convert(double value, String unit) { |
||||
String upperUnit = unit.toUpperCase(); |
String upperUnit = unit.toUpperCase(); |
||||
if (upperUnit.equals("C")) { |
if (upperUnit.equals("C")) { |
||||
double f = celsiusToFahrenheit(value); |
double f = celsiusToFahrenheit(value); |
||||
System.out.printf("%.2f °C = %.2f °F%n", value, f); |
System.out.printf("%.2f °C = %.2f °F%n", value, f); |
||||
} else if (upperUnit.equals("F")) { |
} else if (upperUnit.equals("F")) { |
||||
double c = fahrenheitToCelsius(value); |
double c = fahrenheitToCelsius(value); |
||||
System.out.printf("%.2f °F = %.2f °C%n", value, c); |
System.out.printf("%.2f °F = %.2f °C%n", value, c); |
||||
} else { |
} else { |
||||
System.out.println("未知单位,请使用 C 或 F。"); |
System.out.println("未知单位,请使用 C 或 F。"); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
/** |
/** |
||||
* 交互式输入模式(和Python原版一致) |
* 交互式输入模式(和Python原版一致) |
||||
*/ |
*/ |
||||
public static void interactiveMode() { |
public static void interactiveMode() { |
||||
Scanner scanner = new Scanner(System.in); |
Scanner scanner = new Scanner(System.in); |
||||
System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); |
System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); |
||||
String s = scanner.nextLine().trim(); |
String s = scanner.nextLine().trim(); |
||||
scanner.close(); |
scanner.close(); |
||||
|
|
||||
if (s.isEmpty()) { |
if (s.isEmpty()) { |
||||
System.out.println("输入为空,程序退出。"); |
System.out.println("输入为空,程序退出。"); |
||||
return; |
return; |
||||
} |
} |
||||
|
|
||||
try { |
try { |
||||
String[] parts = s.split("\\s+"); |
String[] parts = s.split("\\s+"); |
||||
double value = Double.parseDouble(parts[0]); |
double value = Double.parseDouble(parts[0]); |
||||
// 若用户只输数值,默认按摄氏度处理
|
// 若用户只输数值,默认按摄氏度处理
|
||||
String unit = parts.length > 1 ? parts[1] : "C"; |
String unit = parts.length > 1 ? parts[1] : "C"; |
||||
convert(value, unit); |
convert(value, unit); |
||||
} catch (Exception e) { |
} catch (Exception e) { |
||||
System.out.println("输入解析失败,请按示例输入数值与单位,例如:36.6 C"); |
System.out.println("输入解析失败,请按示例输入数值与单位,例如:36.6 C"); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
/** |
/** |
||||
* 批量转换:从文件读取多行温度并输出结果(加分项) |
* 批量转换:从文件读取多行温度并输出结果(加分项) |
||||
* @param filePath 文件路径(每行格式:数值 单位,例如 36.6 C) |
* @param filePath 文件路径(每行格式:数值 单位,例如 36.6 C) |
||||
*/ |
*/ |
||||
public static void batchConvert(String filePath) { |
public static void batchConvert(String filePath) { |
||||
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { |
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { |
||||
String line; |
String line; |
||||
System.out.println("\n===== 批量转换开始 ====="); |
System.out.println("\n===== 批量转换开始 ====="); |
||||
while ((line = br.readLine()) != null) { |
while ((line = br.readLine()) != null) { |
||||
String trimLine = line.trim(); |
String trimLine = line.trim(); |
||||
// 跳过空行
|
// 跳过空行
|
||||
if (trimLine.isEmpty()) continue; |
if (trimLine.isEmpty()) continue; |
||||
try { |
try { |
||||
String[] parts = trimLine.split("\\s+"); |
String[] parts = trimLine.split("\\s+"); |
||||
double value = Double.parseDouble(parts[0]); |
double value = Double.parseDouble(parts[0]); |
||||
String unit = parts.length > 1 ? parts[1] : "C"; |
String unit = parts.length > 1 ? parts[1] : "C"; |
||||
System.out.print("处理:" + line + " → "); |
System.out.print("处理:" + line + " → "); |
||||
convert(value, unit); |
convert(value, unit); |
||||
} catch (Exception e) { |
} catch (Exception e) { |
||||
System.out.println("行「" + line + "」格式错误,跳过"); |
System.out.println("行「" + line + "」格式错误,跳过"); |
||||
} |
} |
||||
} |
} |
||||
System.out.println("===== 批量转换结束 =====\n"); |
System.out.println("===== 批量转换结束 =====\n"); |
||||
} catch (IOException e) { |
} catch (IOException e) { |
||||
System.out.println("\n读取文件失败:找不到 " + filePath + " 文件(请确认文件在同目录下)\n"); |
System.out.println("\n读取文件失败:找不到 " + filePath + " 文件(请确认文件在同目录下)\n"); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
public static void main(String[] args) { |
public static void main(String[] args) { |
||||
// 优先处理命令行参数模式(加分项)
|
// 优先处理命令行参数模式(加分项)
|
||||
if (args.length >= 2) { |
if (args.length >= 2) { |
||||
try { |
try { |
||||
double value = Double.parseDouble(args[0]); |
double value = Double.parseDouble(args[0]); |
||||
String unit = args[1]; |
String unit = args[1]; |
||||
convert(value, unit); |
convert(value, unit); |
||||
} catch (Exception e) { |
} catch (Exception e) { |
||||
System.out.println("命令行参数解析失败!示例用法:java TemperatureConverter 36.6 C"); |
System.out.println("命令行参数解析失败!示例用法:java TemperatureConverter 36.6 C"); |
||||
} |
} |
||||
} else { |
} else { |
||||
// 无命令行参数则进入交互式模式 + 批量转换
|
// 无命令行参数则进入交互式模式 + 批量转换
|
||||
interactiveMode(); |
interactiveMode(); |
||||
batchConvert("temps.txt"); |
batchConvert("temps.txt"); |
||||
} |
} |
||||
} |
} |
||||
} |
} |
||||
@ -1,6 +1,6 @@ |
|||||
36.6 C |
36.6 C |
||||
97 F |
97 F |
||||
100 C |
100 C |
||||
212 F |
212 F |
||||
25 C |
25 C |
||||
77 F |
77 F |
||||
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Loading…
Reference in new issue