我正在编写一个程序,它应该接受一个必需的命令行参数和一个可选的命令行参数。第一个参数是要写入数据的输出文件的名称,第二个参数是用于计算要写入输出文件的数据的数字。如果用户不输入一个数字,那么它应该只使用默认值来计算数据。例如,如果用户输入命令行参数"Foo.csv 1024“,程序将使用1024计算数据并将其写入Foo.csv,但如果用户只使用命令行参数" Foo.csv”,则程序将使用默认值2048计算数据并将其写入Foo.csv。我正在使用Intellij创建/运行这个程序。我该怎么做?如有任何意见/建议,将不胜感激。
发布于 2017-03-12 14:47:59
您的程序似乎很简单,因此解决方案对于这种特殊情况也很简单。您可以测试有多少参数被传递给程序,检查主函数的参数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)也可以使用参数来运行程序,但是您可以在run中指定这些参数。
如果您希望对参数进行更复杂的处理,通常需要通过参数解析器来完成。这些库通常会带您讨论并帮助您阅读程序中的参数。除其他外,这些库通常支持可选参数、通过标志提供的参数、参数类型检查、为命令创建自动帮助页等。如果您的参数要求更复杂,或者您只想对您的程序进行专业接触,请考虑使用参数解析器:),对于java,我发现了一个特定的库:http://www.martiansoftware.com/jsap/doc/。
https://stackoverflow.com/questions/42753849
复制