将可选参数传递给 CLI 程序 - Java

Pass optional parameters to a CLI program - Java

我正在制作命令行程序,我正在使用 if 条件来检查用户输入的内容并启动特定方法。

input = bufferedReader.readLine;

if (input.equals("search"))
    search();


所以就目前而言,要执行搜索,用户必须输入:

>>> search
>>> aTextToSearchFor

但我希望用户能够输入

>>> search -c 3

所以,3将作为参数传递给search()方法
同样,只有 search 应该有效,默认值 0 将被传递


注:

您可能会发现 String.split 对您有所帮助。也许这样的事情可以帮助您入门?

input = bufferedReader.readLine();
String[] args = input.split(" +"); // split on one or more spaces
if (args[0].equals("search")) {
    if (args.length > 2) {
        // args may be an array like {"search", "-c", "5"}.
        // After you confirm that, you may need to convert args[2]
        // from a String to an int using Integer.parseInt
        // (more code here)
    }
}

当你的程序很小的时候,这样简单的开始是可以的。如果您的程序开始变大并且您觉得自己在一遍又一遍地编写类似的代码,那么可能是查看命令解析库的好时机。

您提到了 Apache Commons CLI 或 Jcommander,但我个人认为 argparse4j 在功能和简单性之间取得了很好的平衡。它有一个流畅的 API,这意味着您的代码看起来像:

ArgumentParser p = ArgumentParsers.newArgumentParser(myCommandName)
        .description(myCommandDescription);
p.addArgument(...).help(...)...
...
p.parseArgsOrFail(args);