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