通常,当我们必须使用Java访问命令行参数时,使用args [] 但这在命令行输入这样的情况下会很好,
//Demo is class
C:\java Demo 1 2
我们只需使用args [0]和args [1]即可访问1和2。
但是我遇到了这样一种情况,命令行输入将是这样,
C:\java Demo --num1=12 --num2=14
如果我必须获得大于num1和num2的值,我怎么得到它?
每次只获得更简单的版本时,我都会用几次谷歌搜索命令行参数,但都进行了少量修改。
我在这里遇到了这个答案
How do I parse command line arguments in Java?。
但是我正在寻找一个没有第三方库的简单Java版本。是的,它们使我们的生活变得轻松,但是我想首先学习Java。
public static void main(String[] args) {
//simpler way to access command line arguments
int first_num = Integer.parseInt(args[0]);
int second_num = Integer.parseInt(args[1]);
System.out.println("num1= "+first_num+", num2= "+second_num);
}
实际上不确定是否通过使用
C:\ java Demo --num1=12 --num2=13
我们将可以通过或不通过main方法直接访问num1和num2。
但是我需要那些值可以在main方法中使用。
希望我很清楚,如果需要任何信息,请告诉我。
答案 0 :(得分:2)
要以一种非常简单的方式实现您想要的目标,您可以尝试
public static void main(String[] args) {
Map<String, String> argsMap = new LinkedHashMap<>();
for (String arg: args) {
String[] parts = arg.split("=");
argsMap.put(parts[0], parts[1]);
}
argsMap.entrySet().forEach(arg-> {
System.out.println(arg.getKey().replace("--", "") + "=" + arg.getValue());
});
}
注意:根据重复的帖子,还有更多高级方法。但是我想您正在寻找一种非常简单的方法。
答案 1 :(得分:1)
我建议您看一下完全符合您要求的Apache Commons CLI:
http://commons.apache.org/proper/commons-cli/
请先阅读介绍:http://commons.apache.org/proper/commons-cli/introduction.html
它甚至有一个很好的流利的API:
Options options = new Options();
options.addOption(OptionBuilder.withLongOpt("num1")
.withDescription("some info about the usage")
.hasArg()
.withArgName("VALUE")
.create() );