Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java:创建一个可选的命令行参数

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

Stack Overflow用户
提问于 2017-03-12 14:15:44
回答 1查看 5.3K关注 0票数 1

我正在编写一个程序,它应该接受一个必需的命令行参数和一个可选的命令行参数。第一个参数是要写入数据的输出文件的名称,第二个参数是用于计算要写入输出文件的数据的数字。如果用户不输入一个数字,那么它应该只使用默认值来计算数据。例如,如果用户输入命令行参数"Foo.csv 1024“,程序将使用1024计算数据并将其写入Foo.csv,但如果用户只使用命令行参数" Foo.csv”,则程序将使用默认值2048计算数据并将其写入Foo.csv。我正在使用Intellij创建/运行这个程序。我该怎么做?如有任何意见/建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-12 14:47:59

您的程序似乎很简单,因此解决方案对于这种特殊情况也很简单。您可以测试有多少参数被传递给程序,检查主函数的参数args:

代码语言:javascript
运行
AI代码解释
复制
public static void main(String[] args){...}

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

代码语言:javascript
运行
AI代码解释
复制
args[0] = "Foo.csv";
args[1] = "1024";

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

代码语言:javascript
运行
AI代码解释
复制
args[0] = "Foo.csv";

所以你的程序应该是:

代码语言:javascript
运行
AI代码解释
复制
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/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42753849

复制
相关文章
绕过CDN找到源站的思路
网上有很多绕过CDN的思路,但是存在很多问题,以下是收集并总结的思路。 站在站长的角度,不可能每个站都会用上CDN。 站在DNS服务商的角度,历史解析记录可能不受CDN服务商控制。 站在CDN服务商的角度,提供CDN服务的区域有限制,CDN流量有限制。
HACK学习
2019/08/06
1.8K0
MyBatisPlus注入公共Sql问题
转载自 https://blog.csdn.net/synsdeng/article/details/78354462
allsmallpig
2021/02/25
1.1K0
python找到多个字典中的公共键
python找到多个字典中的公共键 生成字典 from random import randint,sample s = 'abcdefg' s1 = {x:randint(1,4) for x in sample(s,randint(3,6))} s2 = {x:randint(1,4) for x in sample(s,randint(3,6))} s3 = {x:randint(1,4) for x in sample(s,randint(3,6))} 方案1:循环判断 res = [] fo
听城
2018/04/27
4.1K0
SpringMVC 参数注入
写一个web service, 总是400. 说是request有问题,server不识别。然而检查了很多次都没问题。最终问题指向spring对参数的解析和注入。 一个controller中可以自定义参数,只要参数和request的参数匹配就会自动注入。针对自定义POJO,显然是spring帮忙给new了一个新的,然后把参数扔进去。 测试发现,不是setter方法的问题。 最后,发现自己在POJO中添加了个构造函数但却么有声明无参构造函数,这样导致spring无法调用无参构造函数,于是bad request
Ryan-Miao
2018/03/13
8280
CA1062:验证公共方法的参数
外部可见方法取消引用其中一个引用参数,而不验证该参数是否 null(Visual Basic 中 Nothing)。
呆呆
2022/01/10
7310
jsdelivr静态公共库已开始DNS污染- 星泽V社
JSDelivr是一种特殊的CDN。 它旨在让用户下载npm和Github上托管JavaScript库,jsDelivr是一个开源的网站,提供免费的cdn加速加载资源。
星泽V社
2022/05/01
1.1K0
jsdelivr静态公共库已开始DNS污染- 星泽V社
SQL 注入类型详解
笔者最初学习 SQL 注入时,大家对于 SQL 注入类型的归类让我头脑一片混乱,后来笔者发现其实大家都是根据 sqlmap 上给出的“类型”来划分的。所以,今天在这里,笔者根据自己所学所知来对 SQL 注入进行一个分类,以及讲解一些在注入时十分重要而有用的知识,相信对初学者十分有用。
信安之路
2018/08/08
3.3K0
SQL 注入类型详解
Actframework依赖注入 II - 注入对象类型
1. 框架内置绑定 在ActFramework中有大量的服务和组件都可以直接使用依赖注入,其中包括 ActionContext - Encapsulate all data/info relevant to an HTTP request context H.Session - HTTP request session. Also available via actionContext.session() H.Flash - HTTP request flash. Also available via ac
老码农
2018/06/27
3140
1.2.2-SQL注入-SQL注入语法类型-报错注入
构造payload让信息通过错误提示回显出来 应用场景: 查询不回显内容,会打印错误信息 Update、insert等语句,会打印错误信息
tea9
2022/07/16
1.6K0
1.2.2-SQL注入-SQL注入语法类型-报错注入
30个免费且很棒的公共数据源分享
机器学习、人工智能、区块链、预测分析——所有令人惊叹的技术都承诺将革新商业和社会。
IT派
2018/07/30
1K0
30个免费且很棒的公共数据源分享
Spring-注入参数详解-[通过util命名空间简化集合类型的配置]
如果希望配置一个集合类型的Bean,而非一个集合类型的属性,则可以通过util命名空间进行配置。
小小工匠
2021/08/16
4700
Spring-注入参数详解-[集合类型属性]
java.util包中的集合类型是最常用的结构数据类型,主要包括List、Set、Map、Properties。
小小工匠
2021/08/16
4090
Spring-注入参数详解-[字面值及引用其他Bean]
在Spring配置文件中,不但可以将String、int等字面值注入bean中,还可以将集合、map等类型的数据注入Bean中, 此外还可以注入配置文件中其他定义的Bean.
小小工匠
2021/08/16
5150
解析类型参数
这个方法有效的原因是:向容量为零的切片追加元素将分配一个新的底层数组。函数体的长度最终比函数签名的长度要短,函数体短是一方面原因,函数签名长是另一方面原因。在本博客文章中,我们将解释为什么函数签名被写成这样。
孟斯特
2023/10/04
1560
解析类型参数
JVM参数类型
1. 标准参数 * -help * -server , -client * -version . -showversion * -cp , -classpath
用户1212940
2022/04/13
5930
JVM参数类型
解析类型参数
这个方法有效的原因是:向容量为零的切片追加元素将分配一个新的底层数组。函数体的长度最终比函数签名的长度要短,函数体短是一方面原因,函数签名长是另一方面原因。在本博客文章中,我们将解释为什么函数签名被写成这样。
孟斯特
2023/10/19
1710
解析类型参数
Spring-注入参数详解-[简化配置方式]
Spring为字面值、引用Bean和集合都提供了简化的配置方式,如果没有用到完整格式的特殊功能,大可使用简化的配置方式。
小小工匠
2021/08/16
2740
找到合适的模型参数提高准确度
如果一直在阅读有关数据科学或机器学习的知识,那么一定遇到与MNIST数据集一起使用的文章和项目。数据集包括一组70,000个图像,其中每个图像是从0到9的手写数字。决定使用相同的数据集来了解如何微调机器学习模型参数可以产生差异。
代码医生工作室
2019/06/21
7290
找到合适的模型参数提高准确度
点击加载更多

相似问题

MULTIPART_FORM_DATA:没有为公共javax.ws.rs.core.Response类型的参数找到注入源

113

无法注册泽西MultiPartFeature

12

泽西ModelValidationException -没有找到注入源

32

泽西3多部分功能没有注入源

115

MULTIPART_FORM_DATA:没有为类型响应的参数找到注入源

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文