我正在制作一个命令行程序,我正在使用 if 条件来检查用户输入的内容并启动特定方法。
input = bufferedReader.readLine;
if (input.equals("search"))
search();
现在,要进行搜索,用户必须输入:
>>> search
>>> aTextToSearchFor
但我希望用户能够输入
>>> search -c 3
因此,3
将作为参数传递给search()
方法
另外,search
只应该有效,而且会传递默认值0
注意:
-c
的情况下实现此功能,因此命令将为search 5
答案 0 :(得分:1)
您可能会发现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);