我正在开发一个程序,该程序应该采用一个必需的命令行参数和一个可选的命令行参数。第一个参数是将写入数据的输出文件的名称,第二个参数是用于计算要写入输出文件的数据的数字。如果用户没有输入数字,那么它应该只使用默认值来计算数据。例如,如果用户输入命令行参数“Foo.csv 1024”,程序将使用1024来计算数据并将其写入Foo.csv,但如果用户仅使用命令行参数“Foo.csv”,则程序将使用默认值2048来计算数据并将其写入Foo.csv。我正在使用Intellij IDE创建/运行该程序。我该怎么做?任何意见/建议将不胜感激。
答案 0 :(得分:1)
您的程序似乎很简单,因此对于这种特殊情况,解决方案也很简单。您可以测试将多少个参数传递给程序,检查主函数的参数 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中的以下args.length = 1 :
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),也可以使用参数运行程序,但是您可以在运行设置中指定它们。
如果你想要更复杂的参数处理,通常你想要的是参数解析器。这些通常是带有argv并帮助您阅读程序参数的库。除此之外,这些库通常支持可选参数,通过标志提供的参数,参数的类型检查,为命令创建自动帮助页面等。如果您的参数要求更复杂或者您只是想给出一个参数解析器,请考虑使用参数解析器专业的触摸你的程序:) 对于java,我发现了这个特定的库:http://www.martiansoftware.com/jsap/doc/