Browse Source

feat(w1):add TemperatureConverter温度转换作业及相关材料

main
Sunchenxi 1 month ago
parent
commit
0bdb8ad236
  1. 8
      TemperatureConverter/AI 协助记录.txt
  2. 118
      TemperatureConverter/README.md
  3. BIN
      TemperatureConverter/TemperatureConverter.class
  4. 118
      TemperatureConverter/TemperatureConverter.java
  5. BIN
      TemperatureConverter/屏幕截图 2026-03-09 124351.png

8
TemperatureConverter/AI 协助记录.txt

@ -0,0 +1,8 @@
本次作业中,我使用 AI 辅助完成了从 Python 到 Java 的程序迁移。
我使用的主要提示词包括:
1. “将Python温度转换程序改写为等效的Java程序,保留注释并保证功能一致”
2. “Java程序需要支持命令行参数模式,例如  java TemperatureConverter 36.6C ”

118
TemperatureConverter/README.md

@ -0,0 +1,118 @@
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
/**
* 温度转换程序:实现摄氏温度与华氏温度的相互转换
* 支持交互式输入、命令行参数和批量文件转换三种模式
*/
public class TemperatureConverter {
/**
* 将摄氏温度转换为华氏温度
* @param celsius 摄氏温度值
* @return 对应的华氏温度值
*/
public static double celsiusToFahrenheit(double celsius) {
return celsius * 9.0 / 5.0 + 32.0;
}
/**
* 将华氏温度转换为摄氏温度
* @param fahrenheit 华氏温度值
* @return 对应的摄氏温度值
*/
public static double fahrenheitToCelsius(double fahrenheit) {
return (fahrenheit - 32.0) * 5.0 / 9.0;
}
/**
* 解析并转换单个温度输入
* @param input 带单位的温度字符串,如 "36.6C" 或 "98.6F"
*/
public static void convertAndPrint(String input) {
try {
char unit = input.charAt(input.length() - 1);
double value = Double.parseDouble(input.substring(0, input.length() - 1));
if (unit == 'C' || unit == 'c') {
double fahrenheit = celsiusToFahrenheit(value);
System.out.printf("%.2f°C = %.2f°F%n", value, fahrenheit);
} else if (unit == 'F' || unit == 'f') {
double celsius = fahrenheitToCelsius(value);
System.out.printf("%.2f°F = %.2f°C%n", value, celsius);
} else {
System.out.println("错误:温度单位必须是 C 或 F");
}
} catch (NumberFormatException e) {
System.out.println("错误:无法解析温度数值,请输入如 36.6C 或 98.6F 的格式");
} catch (StringIndexOutOfBoundsException e) {
System.out.println("错误:输入不能为空或格式不正确");
}
}
/**
* 从文件批量读取温度并转换
* @param filename 输入文件名,每行一个温度值
*/
public static void batchConvertFromFile(String filename) {
try {
File file = new File(filename);
Scanner scanner = new Scanner(file);
int lineNumber = 0;
while (scanner.hasNextLine()) {
lineNumber++;
String line = scanner.nextLine().trim();
if (!line.isEmpty()) {
System.out.printf("第 %d 行: ", lineNumber);
convertAndPrint(line);
}
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("错误:未找到文件 " + filename);
}
}
/**
* 交互式转换模式
*/
public static void interactiveMode() {
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎使用温度转换器");
System.out.println("输入格式:数字+单位(如 36.6C 或 98.6F),输入 exit 退出");
while (true) {
System.out.print("请输入温度: ");
String input = scanner.nextLine().trim();
if (input.equalsIgnoreCase("exit")) {
System.out.println("再见!");
break;
}
convertAndPrint(input);
}
scanner.close();
}
/**
* 主程序入口
* @param args 命令行参数:
* - 无参数:进入交互式模式
* - 一个参数:直接转换该温度(如 36.6C)
* - 两个参数且第一个为 -f:从指定文件批量转换
*/
public static void main(String[] args) {
if (args.length == 0) {
interactiveMode();
} else if (args.length == 1) {
convertAndPrint(args[0]);
} else if (args.length == 2 && args[0].equals("-f")) {
batchConvertFromFile(args[1]);
} else {
System.out.println("用法:");
System.out.println(" java TemperatureConverter - 进入交互式模式");
System.out.println(" java TemperatureConverter 36.6C - 直接转换单个温度");
System.out.println(" java TemperatureConverter -f temps.txt - 从文件批量转换");
}
}
}

BIN
TemperatureConverter/TemperatureConverter.class

Binary file not shown.

118
TemperatureConverter/TemperatureConverter.java

@ -0,0 +1,118 @@
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
/**
* 温度转换程序实现摄氏温度与华氏温度的相互转换
* 支持交互式输入命令行参数和批量文件转换三种模式
*/
public class TemperatureConverter {
/**
* 将摄氏温度转换为华氏温度
* @param celsius 摄氏温度值
* @return 对应的华氏温度值
*/
public static double celsiusToFahrenheit(double celsius) {
return celsius * 9.0 / 5.0 + 32.0;
}
/**
* 将华氏温度转换为摄氏温度
* @param fahrenheit 华氏温度值
* @return 对应的摄氏温度值
*/
public static double fahrenheitToCelsius(double fahrenheit) {
return (fahrenheit - 32.0) * 5.0 / 9.0;
}
/**
* 解析并转换单个温度输入
* @param input 带单位的温度字符串 "36.6C" "98.6F"
*/
public static void convertAndPrint(String input) {
try {
char unit = input.charAt(input.length() - 1);
double value = Double.parseDouble(input.substring(0, input.length() - 1));
if (unit == 'C' || unit == 'c') {
double fahrenheit = celsiusToFahrenheit(value);
System.out.printf("%.2f°C = %.2f°F%n", value, fahrenheit);
} else if (unit == 'F' || unit == 'f') {
double celsius = fahrenheitToCelsius(value);
System.out.printf("%.2f°F = %.2f°C%n", value, celsius);
} else {
System.out.println("错误:温度单位必须是 C 或 F");
}
} catch (NumberFormatException e) {
System.out.println("错误:无法解析温度数值,请输入如 36.6C 或 98.6F 的格式");
} catch (StringIndexOutOfBoundsException e) {
System.out.println("错误:输入不能为空或格式不正确");
}
}
/**
* 从文件批量读取温度并转换
* @param filename 输入文件名每行一个温度值
*/
public static void batchConvertFromFile(String filename) {
try {
File file = new File(filename);
Scanner scanner = new Scanner(file);
int lineNumber = 0;
while (scanner.hasNextLine()) {
lineNumber++;
String line = scanner.nextLine().trim();
if (!line.isEmpty()) {
System.out.printf("第 %d 行: ", lineNumber);
convertAndPrint(line);
}
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("错误:未找到文件 " + filename);
}
}
/**
* 交互式转换模式
*/
public static void interactiveMode() {
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎使用温度转换器");
System.out.println("输入格式:数字+单位(如 36.6C 或 98.6F),输入 exit 退出");
while (true) {
System.out.print("请输入温度: ");
String input = scanner.nextLine().trim();
if (input.equalsIgnoreCase("exit")) {
System.out.println("再见!");
break;
}
convertAndPrint(input);
}
scanner.close();
}
/**
* 主程序入口
* @param args 命令行参数
* - 无参数进入交互式模式
* - 一个参数直接转换该温度 36.6C
* - 两个参数且第一个为 -f从指定文件批量转换
*/
public static void main(String[] args) {
if (args.length == 0) {
interactiveMode();
} else if (args.length == 1) {
convertAndPrint(args[0]);
} else if (args.length == 2 && args[0].equals("-f")) {
batchConvertFromFile(args[1]);
} else {
System.out.println("用法:");
System.out.println(" java TemperatureConverter - 进入交互式模式");
System.out.println(" java TemperatureConverter 36.6C - 直接转换单个温度");
System.out.println(" java TemperatureConverter -f temps.txt - 从文件批量转换");
}
}
}

BIN
TemperatureConverter/屏幕截图 2026-03-09 124351.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Loading…
Cancel
Save