在java中传递-d选项[重复]
Posted
技术标签:
【中文标题】在java中传递-d选项[重复]【英文标题】:Passing -d option in java [duplicate] 【发布时间】:2016-12-04 22:46:27 【问题描述】:我正在解决一个问题,要求程序应允许用户使用 -d 命令行选项设置参数。 java 是否提供任何机制来使用 -d 选项传递参数?我找不到,所以我把它解释为命令行选项值是-d,这意味着用户想输入下一个参数。
if ( args[0].equals("-d") )
parameter = args[0];
这是检查的正确方法吗?有没有更好的方法来检查用户是否输入了-d
选项? java是否为此提供了一些其他机制?
【问题讨论】:
使用命令行参数解析器。 JCommander(无从属关系)是我的偏好 - 还有其他人。 然后parameter = "-d"
,或null
- 这就是你想要的吗?例如,看看 Apache Commons CLI;和***.com/questions/10745811/…
【参考方案1】:
我认为要求是指-D
(大写字母),而不是-d
。此类选项用于将附加参数传递给 java。例如,-Dmy.option=value
。在这种情况下,您可以通过 System
类访问此属性:
String myOption = System.getProperty("my.option");
【讨论】:
【参考方案2】:如果有人用./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 初始代码的更新版本。【参考方案3】:您传递给正在运行的程序的所有参数,都将通过 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();
【讨论】:
以上是关于在java中传递-d选项[重复]的主要内容,如果未能解决你的问题,请参考以下文章
防止在get方法php中传递其他具有相同名称的隐藏下拉字段[重复]
如何使用 npm babel 和 commandjs 将选项传递给脚本 [重复]