首页 > 解决方案 > 如何检查主类java中的命令参数

问题描述

我有以下程序:我有一个 jar 文件,它从 main 方法获取 4 个参数:输入文件、排序依据、排序方向、输出文件。输入文件是读取信息的文件,order by是排序依据(test,runs等),排序方向(asc,desc),输出文件是保存信息的地方。这是我在 main 方法中的代码:

      if (args.length > 0)
        {
            if (args[0].isEmpty())
            {
                System.out.println("Enter input file");
                System.exit(1);
            }
            else
            {
                args[0] = inputFile;
            }
            if (args[1].isEmpty())
            {
                System.out.println("Enter order by");
                System.exit(1);
            }
            else
            {
                args[1] = orderBy;
            }
            if (args[2].isEmpty())
            {
                System.out.println("Enter sort direction");
                System.exit(1);
            }
            else
            {
                args[2] = sortDirection;
            }
            if (args[3].isEmpty())
            {
                System.out.println("Enter output file");
                System.exit(1);
            }
            else
            {
                args[3] = outputFile;
            }

        }
        else
        {
            System.out.println("Must enter parameteres!");
            System.exit(0);
        }

          SaveInfoManager.SaveInFile(inputFile, sortDirection, orderBy, outputFile);

我有以下错误:当我不输入某些参数时出现 ArraysIndexOutOfBoundsException。示例我没有输入作为排序方向的第三个参数,并且我想打印未输入的消息。但我不明白为什么即使我进行检查也会抛出该异常。你能告诉我我的错在哪里,我该如何正确地做到这一点?

标签: javacommand-line

解决方案


args[n].isEmpty()检查数组位置中包含的字符串是否n为空,这会导致数组的元素ArraysIndexOutOfBoundsException少于。 为了检查您需要使用的数组的长度 n

if(args.length == 4){ ... }

推荐阅读