diff --git a/TemperatureConventer b/TemperatureConventer deleted file mode 100644 index ca2bab3..0000000 --- a/TemperatureConventer +++ /dev/null @@ -1,136 +0,0 @@ -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.Scanner; - -/** - * 温度转换器(增强版) - * 支持: - * 1. 交互式输入(原有功能) - * 2. 命令行参数模式(java TemperatureConverter 36.6 C) - * 3. 批量文件转换(java TemperatureConverter -f input.txt) - */ -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 input 温度字符串(格式:数值 单位,如 "36.6 C") - * @return 转换结果字符串(用于文件批量输出),解析失败返回null - */ - public static String convertTemperature(String input) { - String trimmedInput = input.trim(); - if (trimmedInput.isEmpty()) { - return "输入为空,跳过转换"; - } - - String[] parts = trimmedInput.split("\\s+"); // 匹配任意空白符(空格/制表符等) - try { - double value = Double.parseDouble(parts[0]); - String unit = parts.length > 1 ? parts[1].toUpperCase() : "C"; - - if (unit.startsWith("C")) { - double fahrenheit = celsiusToFahrenheit(value); - String result = String.format("%.2f °C = %.2f °F", value, fahrenheit); - System.out.println(result); - return result; - } else if (unit.startsWith("F")) { - double celsius = fahrenheitToCelsius(value); - String result = String.format("%.2f °F = %.2f °C", value, celsius); - System.out.println(result); - return result; - } else { - String error = "未知单位,请使用 C 或 F:" + trimmedInput; - System.out.println(error); - return error; - } - } catch (Exception e) { - String error = "输入解析失败:" + trimmedInput + "(格式示例:36.6 C)"; - System.out.println(error); - return error; - } - } - - /** - * 批量处理文件中的温度转换 - * @param filePath 输入文件路径 - */ - public static void processFile(String filePath) { - try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { - String line; - System.out.println("===== 批量文件转换结果 ====="); - while ((line = br.readLine()) != null) { - convertTemperature(line); // 复用核心转换逻辑 - } - System.out.println("===== 文件处理完成 ====="); - } catch (IOException e) { - System.err.println("文件读取失败:" + e.getMessage()); - } - } - - /** - * 交互式输入模式(原有功能) - */ - public static void interactiveMode() { - Scanner scanner = new Scanner(System.in); - System.out.print("请输入要转换的温度与单位(例如 36.6 C 或 97 F):"); - String input = scanner.nextLine(); - convertTemperature(input); // 复用核心转换逻辑 - scanner.close(); - } - - public static void main(String[] args) { - // 1. 命令行参数模式:优先处理参数 - if (args.length > 0) { - // 批量文件模式:参数以 -f 开头 - if (args[0].equalsIgnoreCase("-f") && args.length >= 2) { - processFile(args[1]); - } - // 单个温度转换:参数为 数值 单位 - else if (args.length >= 2) { - String input = args[0] + " " + args[1]; - convertTemperature(input); - } - // 参数不合法 - else { - System.err.println("命令行参数格式错误!"); - printUsage(); - } - } - // 2. 无参数:进入交互式模式 - else { - interactiveMode(); - } - } - - /** - * 打印程序使用说明 - */ - private static void printUsage() { - System.out.println("\n===== 温度转换器使用说明 ====="); - System.out.println("1. 交互式模式(无参数):"); - System.out.println(" java TemperatureConverter"); - System.out.println("2. 命令行单条转换:"); - System.out.println(" java TemperatureConverter 36.6 C"); - System.out.println("3. 批量文件转换:"); - System.out.println(" java TemperatureConverter -f 温度文件路径.txt"); - System.out.println("=============================="); - } -} \ No newline at end of file