如何处理主方法 java 调用中的空参数
How to handle empty parameters in a main method java call
我想要一种将参数传递给 java 主方法调用的动态方式,这是通过命令行 (cmd) 将参数传递给 Runnable 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>**
这是我的主要方法的代码:
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].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
class 的 length
属性。
测试输入数组的长度,并只为那么多的变量赋值。
示例:
int i = args.length;
String dType = (i>0?args[0]:""); //Just do this for each argument
i--; //Then reduce counter by 1
假设最后两个是可选的。
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]);
我想要一种将参数传递给 java 主方法调用的动态方式,这是通过命令行 (cmd) 将参数传递给 Runnable 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>**
这是我的主要方法的代码:
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].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
class 的 length
属性。
测试输入数组的长度,并只为那么多的变量赋值。
示例:
int i = args.length;
String dType = (i>0?args[0]:""); //Just do this for each argument
i--; //Then reduce counter by 1
假设最后两个是可选的。
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]);