【问题标题】:Passing -d option in java [duplicate]在java中传递-d选项[重复]
【发布时间】:2016-12-04 22:46:27
【问题描述】:

我正在解决一个问题,要求程序应允许用户使用 -d 命令行选项设置参数。 java 是否提供任何机制来使用 -d 选项传递参数?我找不到,所以我把它解释为命令行选项值是-d,这意味着用户想输入下一个参数。

if ( args[0].equals("-d") )
{
     parameter = args[0];
}

这是检查的正确方法吗?有没有更好的方法来检查用户是否输入了-d 选项? java是否为此提供了一些其他机制?

【问题讨论】:

标签: java


【解决方案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();
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2014-11-29
      • 2014-09-10
      相关资源
      最近更新 更多