基本上在命令行中,我的论点将是类似的
-app app1 app2 app3 -env env1 env2 //the number can go higher then 3 and 2
Run Code Online (Sandbox Code Playgroud)
我有一个应用程序的枚举和envs的枚举
我知道最简单的方法是使用库并使用它们,但这对我来说不是一个选择.我试图从Java拆分命令行参数中读取内容
从传递带有空格的命令行参数 并将它们放在一起但它没有用完
我认为我需要做的是拆分,当我看到"-app"然后将其后的内容添加到列表中,直到我看到"-env"所以我想要拆分" - ".我从不拆分命令行参数或数组.这就是我到目前为止所尝试的.(我把if部分拿出来因为我知道那个部分正在工作,并且不涉及任何事情)
public static void main(String[] args)
{
boolean sawApp = false;
boolean sawEnv = false;
List<String> appList = new ArrayList();
List<String> envList = new ArrayList();
else if(args.length > 0)
{
for(int i = 0; i < args.length; i ++)
{
if(args.equals("-app"))
{
sawApp = true;
String[] apps = //this is where I am stuck …Run Code Online (Sandbox Code Playgroud) 我有一个用于 25 个应用程序的枚举和一个用于某些环境的枚举。
现在使用我拥有的代码,我可以不传递任何参数并在所有环境中运行所有应用程序(这是我想要的),或者我可以按顺序传递一个应用程序和一个环境,它将运行它。我需要能够通过执行类似 -app app1 app2 app3 ... -env env1 env2 ...
我以前从未使用过标志,也从未尝试过解析命令数组。这是代码的一部分。我认为 if 很好,但 else 是我需要帮助的地方。
public static Application chooseAppTest(String[] args)
{
Application application = null;
switch (Application.valueOf(args[0]))
{
case ACCOUNTINVENTORY:
new AccountInventory(Environment.valueOf(args[1]));
AccountInventory.accountInventoryDatabaseTests(testResults);
break;
public static void main(String[] args)
{
// run tests and collect results
if (args.length == 0)
{
LogIn.loginTest(testResults);
DatabaseTest.testResults(testResults);
LinkTest.linkTests(testResults);
}
else
{
// First choose application, then choose environment
Application.chooseAppTest(args);
}
Run Code Online (Sandbox Code Playgroud)