gpt4 book ai didi

java - 在 Java 中从命令行传递多个参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:31 25 4
gpt4 key购买 nike

我正在开发一个项目,在该项目中我需要从命令行传递多个参数 -

以下是我的用例-

  • 从命令行,我将传递至少四个参数- noOfThreads , noOfTasks , startRangetableName1 ,所以如果我传递了这四个东西,那么我需要将它们存储在一个变量中,并且对于任何表名 - 我需要将它添加到字符串列表中,以便我可以在我的其他代码中使用它们。
  • 其次,我可以像上面一样传递五个参数而不是四个- 所以五个参数可以是- noOfThreads , noOfTasks , startRange , tableName1tableName2 .所以这里tableName2是额外的。所以如果我传递这五个东西,那么我需要将它们存储在一个变量中,在这里我传递 tableName1tableName2作为两个表,所以我将这两个表存储在一个字符串列表中。
  • 第三,我可以像上面一样传递六个参数而不是五个 - 所以六个参数可以是 - noOfThreads , noOfTasks , startRange , tableName1 , tableName2tableName3 .所以这里tableName3是额外的。所以如果我传递了这六个东西,那么我需要将它们存储在一个变量中,在这里我传递 tableName1 , tableName2tableName3作为三个表,所以我将再次将这三个表存储在一个字符串列表中。

  • 所以对于上面的场景,我有下面的代码。目前看起来非常难看,因为我的代码中有很多重复,如下所述。有什么办法可以让它更干净吗?

    下面是我的代码-
    private static List<String> databaseNames = new ArrayList<String>();
    private static int noOfThreads;
    private static int noOfTasks;
    private static int startRange;
    private static String tableName1;
    private static String tableName2;
    private static String tableName3;

    public static void main(String[] args) {

    if (args.length > 0 && args.length < 5) {

    noOfThreads = Integer.parseInt(args[0]);
    noOfTasks = Integer.parseInt(args[1]);
    startRange = Integer.parseInt(args[2]);
    tableName1 = args[3];
    databaseNames.add(tableName1);
    } else if (args.length > 0 && args.length < 6) {
    noOfThreads = Integer.parseInt(args[0]);
    noOfTasks = Integer.parseInt(args[1]);
    startRange = Integer.parseInt(args[2]);
    tableName1 = args[3];
    tableName2 = args[4];
    databaseNames.add(tableName1);
    databaseNames.add(tableName2);
    } else {
    noOfThreads = Integer.parseInt(args[0]);
    noOfTasks = Integer.parseInt(args[1]);
    startRange = Integer.parseInt(args[2]);
    tableName1 = args[3];
    tableName2 = args[4];
    tableName3 = args[5];
    databaseNames.add(tableName1);
    databaseNames.add(tableName2);
    databaseNames.add(tableName3);
    }
    }

    最佳答案

    您有一个 拍品 冗余,当你看到使用方法来简化重构时。这实际上正是我要做的。另外,考虑为您的 tableNames 设置 String[] 字段,String[] tableNames一旦您知道参数计数,这将允许您将其声明为所需大小的数组。例如:

    public void fillParams(String[] args) {
    if (args.length < someMinimum) {
    // throw some exception
    }
    noOfThreads = Integer.parseInt(args[0]);
    noOfTasks = Integer.parseInt(args[1]);
    startRange = Integer.parseInt(args[2]);

    tableNames = new String[args.length - 3];
    for (int i = 0; i < tableNames.length; i++) {
    tableNames[i] = args[i + 3];
    databaseNames.add(tableNames[i]);
    }
    }

    关于java - 在 Java 中从命令行传递多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14795147/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com