import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.util.Scanner;

/**
 * 温度转换器程序（Java）
 * 等效移植Python温度转换程序，支持摄氏/华氏互转
 * 额外支持：命令行参数模式、文件批量转换模式
 */
public class TemperatureConverter {

    /**
     * 将摄氏度转换为华氏度
     * @param c 输入的摄氏温度，数据类型为双精度浮点型
     * @return 转换后的华氏温度，双精度浮点型
     */
    public static double celsiusToFahrenheit(double c) {
        return c * 9.0 / 5.0 + 32.0;
    }

    /**
     * 将华氏度转换为摄氏度
     * @param f 输入的华氏温度，数据类型为双精度浮点型
     * @return 转换后的摄氏温度，双精度浮点型
     */
    public static double fahrenheitToCelsius(double f) {
        return (f - 32.0) * 5.0 / 9.0;
    }

    /**
     * 批量转换：从文件读取多行温度数据并完成转换（加分项）
     * @param filename 存储温度数据的文件名，字符串类型
     */
    public static void batchConvert(String filename) {
        try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
            String line;
            while ((line = br.readLine()) != null) {
                convertAndPrint(line.trim()); // 调用统一转换方法
            }
        } catch (Exception e) {
            System.out.println("文件读取失败：" + e.getMessage());
        }
    }

    /**
     * 统一转换逻辑：解析输入并输出结果（复用核心逻辑）
     * @param input 待解析的温度与单位字符串，如"36.6 C"
     */
    public static void convertAndPrint(String input) {
        if (input.isEmpty()) {
            System.out.println("输入为空，跳过转换。");
            return;
        }
        String[] parts = input.split("\\s+");
        try {
            double value = Double.parseDouble(parts[0]);
            // 与原Python逻辑一致：未输入单位时默认按摄氏度处理
            String unit = parts.length > 1 ? parts[1].toUpperCase() : "C";
            
            if (unit.startsWith("C")) {
                double f = celsiusToFahrenheit(value);
                System.out.printf("%.2f °C = %.2f °F%n", value, f);
            } else if (unit.startsWith("F")) {
                double c = fahrenheitToCelsius(value);
                System.out.printf("%.2f °F = %.2f °C%n", value, c);
            } else {
                System.out.println("未知单位，请使用 C 或 F。");
            }
        } catch (Exception e) {
            System.out.println("输入解析失败，请按示例输入（如 36.6 C）。");
        }
    }

    /**
     * 程序主入口：整合三种运行模式
     * @param args 命令行参数，支持无参数（交互式）、参数为温度单位（命令行模式）、参数为文件名（批量模式）
     */
    public static void main(String[] args) {
        // 模式1：批量文件转换（加分项）- 仅1个参数且为文件时触发
        if (args.length == 1 && new File(args[0]).exists()) {
            batchConvert(args[0]);
            return;
        }

        Scanner scanner = new Scanner(System.in);
        String input;

        // 模式2：命令行参数模式（加分项）- 多参数时直接拼接为输入
        if (args.length > 0) {
            input = String.join(" ", args);
        } else {
            // 模式3：交互式输入（原Python核心功能，必做）
            System.out.print("请输入要转换的温度与单位（例如 36.6 C 或 97 F）：");
            input = scanner.nextLine().trim();
        }

        convertAndPrint(input); // 执行核心转换
        scanner.close();
    }
}