我正在解决一个问题,即需要程序允许用户使用-d命令行选项设置参数。 java是否提供了使用-d选项传递参数的机制?我找不到任何,所以我正在解释,就好像命令行选项值是-d,这意味着用户想要输入下一个参数。在java中传递-d选项
if (args[0].equals("-d"))
{
parameter = args[0];
}
这是正确的方法来检查?有没有更好的方法来检查用户是否输入了-d
选项? java是否提供了其他一些机制?
我正在解决一个问题,即需要程序允许用户使用-d命令行选项设置参数。 java是否提供了使用-d选项传递参数的机制?我找不到任何,所以我正在解释,就好像命令行选项值是-d,这意味着用户想要输入下一个参数。在java中传递-d选项
if (args[0].equals("-d"))
{
parameter = args[0];
}
这是正确的方法来检查?有没有更好的方法来检查用户是否输入了-d
选项? java是否提供了其他一些机制?
如果有人使用./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];
}
}
这开始看起来很像重新发明轮子。你最好的方式是最多... –
这不是重新发明车轮。这是OP的初始代码的更新版本。 – Ibrahim
传递给正在运行的程序的所有参数,会在应用程序通过量参数字串[] 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();
}
}
我认为需求意味着-D
(首都之一),而不是-d
。这些选项用于将附加参数传递给java。例如,-Dmy.option=value
。在这种情况下,您可以通过System
类访问此属性:
String myOption = System.getProperty("my.option");
使用命令行参数解析器。 [JCommander](http://jcommander.org/)(无隶属关系)是我的首选 - 还有其他人。 –
然后'parameter =“-d”'或者'null' - 是你想要的吗?以Apache Commons CLI为例,和http://stackoverflow.com/questions/10745811/how-to-use-terminal-arguments-with-values-in-java –