5 changed files with 126 additions and 0 deletions
@ -0,0 +1,7 @@ |
|||||
|
写代码过程中不知道如何实现命令行参数方式,AI提供结构清晰,完整的Java模板 |
||||
|
我检验完毕并学习后直接引用 |
||||
|
代码完成后测试运行一直出现乱码 |
||||
|
询问AI,得知是编码不兼容问题 |
||||
|
编写的Java文件是UTF-8编码,但javac默认是用GBK去读 |
||||
|
把编译命令改为javac -encoding UTF-8 TemperatureConverter.java保证语言兼容 |
||||
|
还通过AI学会了README.md的作用和创建方式 |
||||
@ -0,0 +1,28 @@ |
|||||
|
\# 温度转换程序 Java 版 |
||||
|
|
||||
|
|
||||
|
|
||||
|
\## 功能说明 |
||||
|
|
||||
|
1\. 摄氏温度 ↔ 华氏温度互相转换 |
||||
|
|
||||
|
2\. 交互式控制台运行 |
||||
|
|
||||
|
3\. 支持命令行参数模式 |
||||
|
|
||||
|
|
||||
|
|
||||
|
\## 编译命令 |
||||
|
|
||||
|
javac -encoding UTF-8 TemperatureConverter.java |
||||
|
|
||||
|
\#运行命令(交互模式) |
||||
|
|
||||
|
java TemperatureConverter |
||||
|
|
||||
|
\#运行命令(命令行模式) |
||||
|
|
||||
|
java TemperatureConverter 36.6 C |
||||
|
|
||||
|
java TemperatureConverter 98.6 F (例) |
||||
|
|
||||
Binary file not shown.
@ -0,0 +1,91 @@ |
|||||
|
/** |
||||
|
* 温度转换程序 |
||||
|
* 功能:摄氏温度与华氏温度相互转换 |
||||
|
* 支持交互式输入 + 命令行参数模式(加分项1) |
||||
|
*/ |
||||
|
public class TemperatureConverter { |
||||
|
|
||||
|
/** |
||||
|
* 摄氏温度转换为华氏温度 |
||||
|
* @param c 摄氏温度值 |
||||
|
* @return 转换后的华氏温度 |
||||
|
*/ |
||||
|
public static double cToF(double c) { |
||||
|
return c * 9.0 / 5.0 + 32; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 华氏温度转换为摄氏温度 |
||||
|
* @param f 华氏温度值 |
||||
|
* @return 转换后的摄氏温度 |
||||
|
*/ |
||||
|
public static double fToC(double f) { |
||||
|
return (f - 32) * 5.0 / 9.0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 主方法:程序入口 |
||||
|
* 支持两种模式: |
||||
|
* 1. 无参数:交互式输入转换 |
||||
|
* 2. 带两个参数:命令行直接转换(加分项) |
||||
|
*/ |
||||
|
public static void main(String[] args) { |
||||
|
// 加分项:命令行参数模式,格式:java TemperatureConverter 36.6 C
|
||||
|
if (args.length == 2) { |
||||
|
try { |
||||
|
double value = Double.parseDouble(args[0]); |
||||
|
String unit = args[1]; |
||||
|
|
||||
|
if (unit.equalsIgnoreCase("C")) { |
||||
|
double f = cToF(value); |
||||
|
System.out.printf("%.2f°C = %.2f°F%n", value, f); |
||||
|
} else if (unit.equalsIgnoreCase("F")) { |
||||
|
double c = fToC(value); |
||||
|
System.out.printf("%.2f°F = %.2f°C%n", value, c); |
||||
|
} else { |
||||
|
System.out.println("单位只能是 C 或 F"); |
||||
|
} |
||||
|
} catch (NumberFormatException e) { |
||||
|
System.out.println("第一个参数必须是数字"); |
||||
|
} |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
// 普通交互模式
|
||||
|
java.util.Scanner sc = new java.util.Scanner(System.in); |
||||
|
System.out.println("温度转换程序"); |
||||
|
System.out.println("请输入温度和单位(例如:36.6 C),输入exit退出"); |
||||
|
|
||||
|
while (true) { |
||||
|
System.out.print("请输入:"); |
||||
|
String line = sc.nextLine().trim(); |
||||
|
|
||||
|
if (line.equalsIgnoreCase("exit")) { |
||||
|
System.out.println("程序结束"); |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
String[] parts = line.split("\\s+"); |
||||
|
if (parts.length != 2) { |
||||
|
System.out.println("输入格式不正确,请重新输入"); |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
double v = Double.parseDouble(parts[0]); |
||||
|
String u = parts[1]; |
||||
|
|
||||
|
if (u.equalsIgnoreCase("C")) { |
||||
|
System.out.printf("%.2f°C = %.2f°F%n", v, cToF(v)); |
||||
|
} else if (u.equalsIgnoreCase("F")) { |
||||
|
System.out.printf("%.2f°F = %.2f°C%n", v, fToC(v)); |
||||
|
} else { |
||||
|
System.out.println("单位错误,只能是 C 或 F"); |
||||
|
} |
||||
|
} catch (NumberFormatException e) { |
||||
|
System.out.println("温度必须是数字"); |
||||
|
} |
||||
|
} |
||||
|
sc.close(); |
||||
|
} |
||||
|
} |
||||
|
After Width: | Height: | Size: 64 KiB |
Loading…
Reference in new issue