如何处理java调用主方法中的空参数



我想有一个动态的方式传递参数到java主方法调用,这是通过命令行(cmd)到一个可运行的JAR文件。目前,我的main()方法接受6个参数,并在调用另一个方法之前将每个参数设置为一个变量。

id喜欢的是一种方式,让用户能够传递5个或更少的参数到命令行,并通过将其设置为null或空字符串(")值来安全地处理遗漏的参数。

例如,如果我运行下面的命令,它应该知道将我没有指定的缺失参数(clientName和outputFolder)设置为空字符串。

java -Xmx1024m -jar MainApp.jar "Summary" **<missing>** "2015-06-07" "https://12345.bp.com/bp/" "c:\Parameters.txt" **<missing>**

下面是我的main方法的代码:

public static void main(String[] args) {
        try {               
            String dType = args[0];
            String clientName = args[1];
            String cycleString = args[2];
            String mspsURL = args[3];
            String inputFile = args[4];
            String outputFolder = args[5];
            System.out.println("**Main Parameters passed**");
            for(String x : args) {
                System.out.println(x);
            }
            runLogic(dType, clientName, cycleString, 
                    mspsURL, inputFile, outputFolder);          
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

感谢您的帮助。

例如,假设最后两个是可选的。

String dType = args[0];
String clientName = args[1];
String cycleString = args[2];
String mspsURL = args[3];
String inputFile = (args.length < 4 ? "default inputFile" : args[4]);
String outputFolder = (args.length < 5 ? "default outputFolder" : args[5]);

如果您真正想要的是缺失项目的关键字,您可以这样做:

String dType = (args[0].equals(keyword)?"":arg[0]);
String clientName = (args[1].equals(keyword)?"":arg[1]);
String cycleString = (args[2].equals(keyword)?"":arg[2]);
String mspsURL = (args[3].equals(keyword)?"":arg[3]);
String inputFile = (args[4].equals(keyword)?"":arg[4]);
String outputFolder = (args[5].equals(keyword)?"":arg[5]);

那么你的输入将是:

java -Xmx1024m -jar MainApp.jar "Summary" "keyword" "2015-06-07" "https://12345.bp.com/bp/" "c:\Parameters.txt" "keyword"

否则我将使用Array类的length属性。

测试输入数组的长度,并只为这些变量赋值。

的例子:

int i = args.length;
String dType = (i>0?args[0]:""); //Just do this for each argument
i--; //Then reduce counter by 1

相关内容

  • 没有找到相关文章

最新更新