java - 如何检查主类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。示例我没有输入作为排序方向的第三个参数,并且我想打印未输入的消息。但我不明白为什么即使我进行检查也会抛出该异常。你能告诉我我的错在哪里,我该如何正确地做到这一点?
解决方案
args[n].isEmpty()
检查数组位置中包含的字符串是否n
为空,这会导致数组的元素ArraysIndexOutOfBoundsException
少于。
为了检查您需要使用的数组的长度 n
if(args.length == 4){ ... }
推荐阅读
- java - 如何从 json 数组中读取特定的 json 对象元素?
- angular - 如何在不订阅的情况下等待异步管道完成并在之后调用另一个函数
- aws-documentdb-mongoapi - 即使使用 maxTimeMS:0,DocumentDB 长时间运行的查询也会超时
- wagtail - Wagtail 多站点设置中的每个站点都有一个 404
- nginx - 处理海量数据API-PLATFORM
- javascript - 如何清除新信息输入时的动画帧?
- google-bigquery - 将多行查询粘贴到 BigQuery SQL shell
- python - 如何将数据框附加到另一个数据框的每一行?
- java - 带有嵌入式码头和球衣的服务器端自定义标头
- java - 签署 XML 时出现 ResourceResolverException