// 温度转换器示例程序(Java) // 支持摄氏度(C)与华氏度(F)之间互转 import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class TemperatureConverter { /** * 将摄氏度转换为华氏度 * 公式:华氏度=摄氏度*9/5+32 * @param c 摄氏温度 * @return 对应的华氏温度 */ public static double celsiusToFahrenheit(double c) { return c * 9.0 / 5.0 + 32.0; } /** * 将华氏度转换为摄氏度 * 公式:摄氏度=(华氏度-32)*5/9 * @param f 华氏温度 * @return 对应的摄氏温度 */ public static double fahrenheitToCelsius(double f) { return (f - 32.0) * 5.0 / 9.0; } /** * 转换与打印方法 */ public static void convertAndPrint(String valueStr,String unitStr) { try { double value = Double.parseDouble(valueStr); String unit = unitStr.toUpperCase(); if (unit.startsWith("C")) { // 从摄氏度转换为华氏度 double result = celsiusToFahrenheit(value); System.out.printf("%.2f °C = %.2f °F%n", value, result); } else if (unit.startsWith("F")) { // 从华氏度转换为摄氏度 double result = fahrenheitToCelsius(value); System.out.printf("%.2f °F = %.2f °C%n", value, result); } else { System.out.println("未知单位,请使用 C 或 F。"); } } catch (NumberFormatException e) { System.out.println("输入解析失败,请按示例输入数值与单位,例如:36.6 C"); } } /** * 交互模式(Python原来的) */ public static void interactiveMode() { Scanner scanner = new Scanner(System.in); // 提示用户输入,格式示例:"36.6 C" 或 "97 F" System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); String inputLine = scanner.nextLine().trim(); // 检查输入是否为空 if (inputLine.isEmpty()) { System.out.println("输入为空,程序退出。"); scanner.close(); return; } // 分割输入字符串 String[] parts =inputLine.split("\\s+"); // 检查成分是否足够 if (parts.length < 1) { System.out.println("输入解析失败,请按示例输入数值与单位,例如:36.6 C"); scanner.close(); return; } // 允许用户输入两个部分:数值与单位 String valueStr = parts[0]; String unitStr = (parts.length > 1) ? parts[1] : "C"; // 调用统一的转换与打印方法 convertAndPrint(valueStr,unitStr); scanner.close(); } /** * 命令行参数模式 */ public static void commandLineMode(String[] args) { // 调用统一的转换与打印方法 convertAndPrint(args[0],args[1]); } /** * 批量转换模式 */ public static void batchMode(String filename) { try{ // 读取文件中的温度值且设置初始值为零 Scanner fileScanner = new Scanner(new File(filename)); System.out.println("批量转换结果:"); int lineNumber = 0; // 多行读取 while (fileScanner.hasNextLine()) { lineNumber++; // 即行数+1 String line = fileScanner.nextLine().trim(); // 跳过空行 if (line.isEmpty()) { continue; } String[] parts = line.split("\\s+"); // 检查格式 if (parts.length < 2) { System.out.println("第"+lineNumber+"行格式错误,应为:温度 单位"); continue; } System.out.print("第"+lineNumber+"行:"); // 调用统一的转换与打印方法 convertAndPrint(parts[0],parts[1]); } fileScanner.close(); System.out.println("批量读取结束"); } catch (FileNotFoundException e) { // 排除文件不存在的情况 System.out.println("错误:文件"+filename+"不存在"); } } /** * main-根据参数选择运行模式 */ public static void main(String[] args) { if (args.length == 0) { // 交互模式(Python源代码转化) interactiveMode(); } else if (args.length == 2 && args[0].equals("-f")) { // 批量转换模式(-f)参数 batchMode(args[1]); } else if (args.length == 2) { // 命令行参数模式 commandLineMode(args); } else { // 参数格式错误 System.out.println("错误:参数格式不正确"); System.out.println("使用方法:"); System.out.println("1. 交互模式:java TemperatureConverter"); System.out.println("2. 命令行模式:java TemperatureConverter <温度值> <单位>"); System.out.println(" 示例:java TemperatureConverter 36.6 C"); System.out.println("3. 批量模式:java TemperatureConverter -f <文件名>"); System.out.println(" 示例:java TemperatureConverter -f input.txt"); } } }