You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin加密解密程序命令行参数解析问题求助

加密解密程序的命令行参数解析方案

核心思路:手动遍历参数数组

无需依赖第三方库,通过遍历命令行参数数组,逐个匹配选项并提取对应值,完全支持参数任意顺序,同时满足默认值规则:

  • 默认模式为enc,默认密钥为0,默认数据为空字符串
  • 遇到-mode/-key/-data时,提取紧随其后的参数作为对应值
  • 处理边界情况(如选项后无值、密钥非整数),保持默认值不变

完整代码示例

public class CryptoProgram {
    public static void main(String[] args) {
        // 初始化默认参数
        String mode = "enc";
        int key = 0;
        String data = "";

        // 遍历解析所有参数
        for (int i = 0; i < args.length; i++) {
            switch (args[i]) {
                case "-mode":
                    if (i + 1 < args.length) {
                        mode = args[i + 1];
                        i++; // 跳过已读取的参数值
                    }
                    break;
                case "-key":
                    if (i + 1 < args.length) {
                        try {
                            key = Integer.parseInt(args[i + 1]);
                        } catch (NumberFormatException e) {
                            System.err.println("无效的密钥格式,将使用默认值0");
                        }
                        i++;
                    }
                    break;
                case "-data":
                    if (i + 1 < args.length) {
                        data = args[i + 1];
                        i++;
                    }
                    break;
                default:
                    System.err.println("未知参数:" + args[i]);
            }
        }

        // 调用已实现的加解密逻辑
        String result = processCrypto(mode, key, data);
        System.out.println(result);
    }

    // 替换为你已完成的加解密逻辑
    private static String processCrypto(String mode, int key, String data) {
        StringBuilder result = new StringBuilder();
        for (char c : data.toCharArray()) {
            if ("enc".equals(mode)) {
                result.append((char) (c + key));
            } else if ("dec".equals(mode)) {
                result.append((char) (c - key));
            } else {
                result.append(c); // 未知模式直接返回原字符
            }
        }
        return result.toString();
    }
}

代码说明

  1. 参数遍历:通过for循环逐个检查每个参数,匹配到选项后立即读取下一个参数作为值,并通过i++跳过已处理的值
  2. 默认值保障:所有参数初始化为默认值,只有当有效选项存在且对应值合法时才更新
  3. 异常处理:针对密钥的整数转换异常做捕获,避免程序崩溃,同时提示用户使用默认值
  4. 兼容性:无论参数顺序如何(如-data在前、-mode在后),都能正确解析

内容的提问来源于stack exchange,提问作者Tibor Tóth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:32:33