java - 如何以任意顺序给出命令行参数?

标签 java command-line-arguments

我有两个枚举,一个用于应用程序,一个用于环境。我希望能够以任何顺序给出这些参数,因此我可以给出 -app app1 app1 -env env1 env2 或 -env env1 env2 -app app1 app2。现在我只能做第一个。我还希望能够只说 -app app1 app2 ,它会运行我在所有环境中列出的所有应用程序,并且对于环境也是如此,但我更关心能够以任一顺序提供它们。

 for(int i = 0; i<args.length; i++)
            {
                if(args[i].equals("-app"))
                {
                    indexOfApp = i;
                }else if(args[i].equals("-env"))
                {
                    indexOfEnv = i;
                }
            }

            int countOfApp = -1;
            int countOfEnv = -1;

            if(indexOfApp != -1 && indexOfEnv != -1)
            {
                countOfApp = indexOfEnv - 1;
                countOfEnv = args.length - (indexOfEnv + 1);
            }


            System.out.println(countOfApp);

            System.out.println(countOfEnv);

            for(int appIndex = indexOfApp + 1; appIndex < countOfApp + 1; appIndex++){
                appList.add(args[appIndex]);

            }
                for(String item : appList )
                {
                    Application app = Application.valueOf(Application.class, item);
                    appList2.add(app);
                }
            for(int envIndex = indexOfEnv + 1; envIndex < args.length; envIndex++){
                envList.add(args[envIndex]);

            }
            for(String item : envList )
            {
             Environment env = Environment.valueOf(Environment.class, item);
                envList2.add(env);
            }

            }    System.out.println(appList); System.out.println(envList);
        Application.chooseAppTest(appList2, envList2);

最佳答案

它可以更简单:

boolean isApp = false;
boolean isEnv = false;

for (int i = 0; i<args.length; i++) {
    if (args[i].equals ("-app")) {
        isApp = true;
        isEnv = false;
    } else if (args[i].equals ("-env")) {
        isEnv = true;
        isApp = false;
    } else if (isEnv) {
        envList.add(args[i]);
    } else if (isApp) {
        appList.add(args[i]);
    }
}

关于java - 如何以任意顺序给出命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25121307/

相关文章:

c++ - 假设文件将打开,我是否相当安全?

java - 两个带有 Apache Commons CLI 的专有 OptionGroup

c - 使用 argp 解析负数

java - 在orientDB中,以下数据类型可以在orientDb的图形数据库中使用还是只能在orientDb的文档数据库中使用?

java - Spring 3.0 REST 实现还是 Jersey ?

java - 如何从类级别注释违规中获取属性路径

c - 在数组中存储 token

node.js - 使用 node.js 时是否有很好的 V8 命令行参数引用

java - jmonkey sphere 运行时错误?

java - onLocationChanged 被调用一次(Android Studio)