如何检查java主类中的命令参数

如何检查java主类中的命令参数,java,command-line,Java,Command Line,我有以下程序:我有一个jar文件,它从主方法获取4个参数:输入文件、排序依据、排序方向、输出文件。输入文件是将读取信息的文件、排序依据是排序依据(测试、运行等)、排序方向(asc、desc)和将保存信息的输出文件。以下是我在main方法中的代码: if (args.length > 0) { if (args[0].isEmpty()) { System.out.println("E

我有以下程序:我有一个jar文件,它从主方法获取4个参数:输入文件、排序依据、排序方向、输出文件。输入文件是将读取信息的文件、排序依据是排序依据(测试、运行等)、排序方向(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,当我没有输入一些参数时。示例我没有输入第三个参数,即排序方向,我想打印未输入的消息。但我不明白为什么即使我做了一个检查也会抛出这个异常。您能告诉我哪里是我的错误以及如何正确地处理它吗?

args[n]。isEmpty()
检查数组的
n
位置中包含的字符串是否为空,如果数组的元素少于
n
,则会导致
数组索引自动边界异常。
为了检查数组的长度,需要使用

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

args
数组的大小与提供的参数数相同。您最好检查数组的大小以了解提供了多少。在访问任何参数之前,您检查了
args.length>0
。这说明
args[0]
在范围内,但仅此而已。如果不检查
args.length>1
,或者不检查
args.length>2
等,则无法安全访问
args[1]
。好的,但是我如何检查具体的第二个参数,例如。并告诉用户它必须是filled@George您可以使用
if(args.length