我有两个枚举,一个用于应用程序,一个用于环境。我希望能够以任何顺序给出这些参数,因此可以给出-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/