5 changed files with 0 additions and 157 deletions
|
Before Width: | Height: | Size: 146 KiB |
@ -1,14 +0,0 @@ |
|||||
# TemperatureConverter |
|
||||
|
|
||||
将 Python 温度转换程序改写为等效 Java 程序,实现摄氏温度与华氏温度的双向转换。 |
|
||||
|
|
||||
## 功能说明 |
|
||||
支持交互式输入:程序启动后等待用户输入温度与单位(例如程序提问后我输入 `35.2 C`)。 |
|
||||
支持命令行参数:直接在运行命令后传入温度与单位(如 `java TemperatureConverter 86 F`,直接输出,无需程序提问)。 |
|
||||
支持批量转换:我先编写了temperatures文件,里面有很多温度,通过 `--batch` 参数读取文本文件进行批量转换。 |
|
||||
|
|
||||
## 编译命令 |
|
||||
在 Windows PowerShell 中,进入代码所在目录后执行: |
|
||||
```powershell |
|
||||
javac TemperatureConverter.java |
|
||||
``` |
|
||||
@ -1,142 +0,0 @@ |
|||||
import java.io.File; |
|
||||
import java.util.Scanner; |
|
||||
|
|
||||
|
|
||||
public class TemperatureConverter { |
|
||||
|
|
||||
/* |
|
||||
* 摄氏度转华氏度。 |
|
||||
* 参数:c 表示摄氏温度 |
|
||||
* 返回转换后的华氏温度 |
|
||||
*/ |
|
||||
public static double celsiusToFahrenheit(double c) { |
|
||||
return c * 9.0 / 5.0 + 32.0; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
* 华氏度转摄氏度。 |
|
||||
* 参数:f 表示华氏温度 |
|
||||
* 返回转换后的摄氏温度 |
|
||||
*/ |
|
||||
public static double fahrenheitToCelsius(double f) { |
|
||||
return (f - 32.0) * 5.0 / 9.0; |
|
||||
} |
|
||||
|
|
||||
/* |
|
||||
* 程序入口。 |
|
||||
* 参数:args 为命令行参数,用于选择运行模式: |
|
||||
* 1) 无参数:交互式输入 |
|
||||
* 2) 两个参数:命令行模式(数值 + 单位) |
|
||||
* 3) --batch 文件名:批量模式 |
|
||||
*/ |
|
||||
public static void main(String[] args) { |
|
||||
// 无参数:交互式(从控制台读一行:数值 单位)
|
|
||||
if (args.length == 0) { |
|
||||
// 创建控制台输入对象
|
|
||||
Scanner sc = new Scanner(System.in); |
|
||||
System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); |
|
||||
String input = sc.nextLine().trim(); |
|
||||
if (input.isEmpty()) { |
|
||||
System.out.println("输入为空,程序退出。"); |
|
||||
sc.close(); |
|
||||
return; |
|
||||
} |
|
||||
// 按空格切分:parts[0] 为数值,parts[1]
|
|
||||
String[] parts = input.split("\\s+"); |
|
||||
try { |
|
||||
// 解析温度数值
|
|
||||
double value = Double.parseDouble(parts[0]); |
|
||||
// 没写单位时默认按 C 处理
|
|
||||
String unit = parts.length > 1 ? parts[1].toUpperCase() : "C"; |
|
||||
if (unit.startsWith("C")) { |
|
||||
double f = celsiusToFahrenheit(value); |
|
||||
// 左边显示用户原始输入,右边保留两位小数
|
|
||||
System.out.printf("%s °C = %.2f °F%n", parts[0], f); |
|
||||
} else if (unit.startsWith("F")) { |
|
||||
double c = fahrenheitToCelsius(value); |
|
||||
// 左边显示用户原始输入,右边保留两位小数
|
|
||||
System.out.printf("%s °F = %.2f °C%n", parts[0], c); |
|
||||
} else { |
|
||||
// 单位不认识就提示
|
|
||||
System.out.println("未知单位,请使用 C 或 F。"); |
|
||||
} |
|
||||
} catch (Exception e) { |
|
||||
// 输入不是“数字 + 单位”的格式,或数字解析失败,就给出提示
|
|
||||
System.out.println("输入解析失败,请按示例输入数值与单位,例如:36.6 C"); |
|
||||
} |
|
||||
sc.close(); |
|
||||
return; |
|
||||
} |
|
||||
|
|
||||
// --batch 文件名:批量转换(从文件逐行读取,每行:数值 单位)
|
|
||||
if (args.length == 2 && args[0].equals("--batch")) { |
|
||||
try { |
|
||||
// 打开文件并逐行读取
|
|
||||
Scanner fileSc = new Scanner(new File(args[1])); |
|
||||
int lineNum = 0; |
|
||||
while (fileSc.hasNextLine()) { |
|
||||
lineNum++; |
|
||||
String line = fileSc.nextLine().trim(); |
|
||||
// 跳过空行、注释行
|
|
||||
if (line.isEmpty() || line.startsWith("#")) |
|
||||
continue; |
|
||||
String[] p = line.split("\\s+"); |
|
||||
try { |
|
||||
// 解析每行的温度数值与单位
|
|
||||
double val = Double.parseDouble(p[0]); |
|
||||
String u = p.length > 1 ? p[1].toUpperCase() : "C"; |
|
||||
if (u.startsWith("C")) { |
|
||||
// 左边显示文件中的原始数值文本,右边保留两位小数
|
|
||||
System.out.printf("%s °C = %.2f °F%n", p[0], celsiusToFahrenheit(val)); |
|
||||
} else if (u.startsWith("F")) { |
|
||||
// 左边显示文件中的原始数值文本,右边保留两位小数
|
|
||||
System.out.printf("%s °F = %.2f °C%n", p[0], fahrenheitToCelsius(val)); |
|
||||
} else { |
|
||||
// 单位不对:提示并跳过该行
|
|
||||
System.out.println("第" + lineNum + "行单位错误,已跳过"); |
|
||||
} |
|
||||
} catch (Exception e) { |
|
||||
// 某一行格式不对:提示并跳过,不影响后续行
|
|
||||
System.out.println("第" + lineNum + "行格式错误,已跳过:" + line); |
|
||||
} |
|
||||
} |
|
||||
// 文件读取完成后关闭 Scanner
|
|
||||
fileSc.close(); |
|
||||
} catch (Exception e) { |
|
||||
// 文件打不开/找不到等情况:提示原因
|
|
||||
System.out.println("读取文件失败:" + e.getMessage()); |
|
||||
} |
|
||||
return; |
|
||||
} |
|
||||
|
|
||||
// 两个参数:命令行模式(直接从 args 读:数值 + 单位)
|
|
||||
if (args.length == 2) { |
|
||||
try { |
|
||||
// 解析第一个参数为温度数值
|
|
||||
double value = Double.parseDouble(args[0]); |
|
||||
// 第二个参数为单位
|
|
||||
String unit = args[1].toUpperCase(); |
|
||||
if (unit.startsWith("C")) { |
|
||||
// 左边显示命令行原始参数,右边保留两位小数
|
|
||||
System.out.printf("%s °C = %.2f °F%n", args[0], celsiusToFahrenheit(value)); |
|
||||
} else if (unit.startsWith("F")) { |
|
||||
// 左边显示命令行原始参数,右边保留两位小数
|
|
||||
System.out.printf("%s °F = %.2f °C%n", args[0], fahrenheitToCelsius(value)); |
|
||||
} else { |
|
||||
// 单位不认识就提示
|
|
||||
System.out.println("未知单位,请使用 C 或 F。"); |
|
||||
} |
|
||||
} catch (Exception e) { |
|
||||
// 参数解析失败:给出用法提示
|
|
||||
System.out.println("参数格式错误,用法:java TemperatureConverter 36.6 C"); |
|
||||
} |
|
||||
return; |
|
||||
} |
|
||||
|
|
||||
// 参数不对:输出帮助信息
|
|
||||
System.out.println("用法:"); |
|
||||
System.out.println(" 交互式:java TemperatureConverter"); |
|
||||
System.out.println(" 命令行:java TemperatureConverter 36.6 C"); |
|
||||
System.out.println(" 批量: java TemperatureConverter --batch temperatures.txt"); |
|
||||
} |
|
||||
} |
|
||||
Binary file not shown.
@ -1 +0,0 @@ |
|||||
我先问ai,请根据python文本给我生成转化为java代码的整体大纲和部骤这个提示词,然后他给我生成了一个类似大纲的内容,从交互,命令到批量,无参数。然后我又问Java温度转换程序,输入带小数,输出保留两位小数怎么写,Java控制台输入温度和单位,怎么拆分字符串,无参数情况代码怎么写,辅助我写代码,学知识。最后在运行时问ai PowerShell里javac编译和java运行命令怎么写,完成运行。 |
|
||||
Loading…
Reference in new issue