我正在解决一个问题,其中要求程序应该允许用户使用-d命令行选项设置参数。 java是否提供了使用-d选项传递参数的任何机制?我无法找到任何内容,所以我将其解释为命令行选项值为-d,这意味着用户想要输入下一个参数。
if ( args[0].equals("-d") )
{
parameter = args[0];
}
这是检查的正确方法吗?有没有更好的方法来检查用户是否输入了-d
选项? java是否提供了其他一些机制?
答案 0 :(得分:1)
如果有人使用./yourapp something else -d
运行该程序,该怎么办?
现在参数-d存在,但不存在于位置0
所以,我的建议是遍历所有参数并检查你需要的东西。
int i;
boolean dParam = false;
for (i = 0; i < args.length; i++) {
if (args[i].equals("-d")) {
dParam = true;
}
}
如果您希望用户在-d之后输入内容,如文件名,那么我建议您这样做:
int i;
boolean dParam = false;
String dParamValue;
for (i = 0; i < args.length; i++) {
if (args[i].equals("-d")) {
dParam = true;
dParamValue = args[++i];
}
}
答案 1 :(得分:1)
我认为要求意味着-D
(首都),而不是-d
。这些选项用于将其他参数传递给java。例如,-Dmy.option=value
。在这种情况下,您可以通过System
class:
String myOption = System.getProperty("my.option");
答案 2 :(得分:0)
您传递给正在运行的程序的所有参数都将通过main方法中的参数 String [] args 进入应用程序。
然后你可以通过检查参数数组是否包含该密钥来检查是否有请求的字典..
public static void main(String[] args) {
System.out.println("is dictionary there?: " + Arrays.asList(args).contains("d"));
if (Arrays.asList(args).contains("d")) {
prepateDictionary();
}else {
prepareSomethingElse();
}
}