java - 带变量名的命令行参数

标签 java

通常,当我们必须在 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 方法中可用。

希望我清楚,如果需要任何信息,请告诉我。

最佳答案

要以非常简单的方式实现您想要的,您可以尝试,

    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());
    });
}

注意:根据重复的帖子,还有更多高级方法。但我想您正在寻找一种非常简单的方法。

关于java - 带变量名的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54092354/

相关文章:

java - 将 SQLite 数据设置为 JsonObject 类,而不使用 Stringbuilder

Java 8 Stream API - 选择分组后的最低键

java - 正则表达式匹配一个或两个点

java - java中的流到底是什么?它们与 Lambda 表达式有何关系?

java - "Close unrelated projects"函数在 Eclipse 中消失

支持事务关联的 Java 或 Spring async TaskExeuctor?

java - 如何将表与该表的实体类中 View 的一列连接起来

java - 查询 Firebase DatabaseReference 的习惯用法是什么?

java - 当选择单选按钮时,RCP 部分打开为脏

java - 使用元素 BufferedReader 和 BufferedWriter 创建数组对象