Java: 创建一个可选的命令行参数

Java: Making an Optional Command Line Argument

我正在开发一个程序,该程序应该采用一个必需的命令行参数和一个可选的命令行参数。第一个参数是将写入数据的输出文件的名称,第二个参数是一个数字,用于计算要写入输出文件的数据。如果用户没有输入数字,那么它应该只使用默认值来计算数据。例如,如果用户输入命令行参数 "Foo.csv 1024",程序将使用 1024 计算数据并将其写入 Foo.csv,但如果用户仅使用命令行参数 "Foo.csv",则该程序将使用默认值 2048 来计算数据并将其写入 Foo.csv。我creating/running这个程序使用的是IntellijIDE。我该怎么做?任何 advice/suggestions 将不胜感激。

你的程序看起来很简单,所以针对这个特殊情况的解决方案也很简单。您可以测试传递给程序的参数数量,检查主函数的参数 args

public static void main(String[] args){...}

args 是一个包含传递给程序的参数的数组。因此,如果您的程序名为 prog,而您 运行 使用 prog Foo.csv 1024,则 args 将具有:

args[0] = "Foo.csv";
args[1] = "1024";

有了这个,您就可以知道哪些参数被传递给了您的程序,通过执行 args.length,您可以知道它们有多少。对于上面的示例,args.length=2 如果用户没有指出最后一个参数(“1024”),那么您将 args.length=1 与args 中的以下内容:

args[0] = "Foo.csv";

所以你的程序应该是这样的:

public static void main(String[] args){
//The default value you want
int number = 2048
if(args.length==2){
    number = Integer.parseInt(args[1]);
}
//'number' will have the number the user specified or the default value (2048) if the user didn't specify a number
}

要为您的程序提供参数,您必须 运行 它在控制台或某种终端上。使用 IntelliJ(或任何其他 IDE)也可以 运行 带参数的程序,但您在 运行 设置 中指定那些。 =15=]

如果你想要更复杂的参数处理,通常你想要的是由参数解析器完成的。这些通常是带你 argv 并帮助你读取程序参数的库。除其他外,这些库通常支持可选参数、通过标志提供的参数、参数类型检查、为您的命令创建自动帮助页面等。如果您的参数要求更复杂或者您只想提供一个参数,请考虑使用参数解析器专业接触您的程序:) 对于 java,我找到了这个特定的库:http://www.martiansoftware.com/jsap/doc/