我正在寻找一些针对我的命令行参数的错误检查
public static void main(String[] args)
{
if(args[0] == null)
{
System.out.println("Proper Usage is: java program filename");
System.exit(0);
}
}
但是,这将返回超出范围的数组异常,这是有道理的。我只是在寻找正确的用法。
Answers:
在这一点上展开:
args变量本身可能为null,但不能通过正常执行。正常执行将java.exe
用作命令行的入口点。但是,我看到一些程序使用C++
JNI的已编译代码来使用jvm.dll
,从而完全绕过java.exe。在这种情况下,可以传递NULL
给main方法,在这种情况下args将为null。
我建议始终检查if ((args == null) || (args.length == 0))
,或者if ((args != null) && (args.length > 0))
根据您的需要。
如果我想检查命令行参数的特定位置是否通过,那么如何检查?例如,在某些情况下,将传递2个命令行参数,而在某些情况下将仅传递一个参数,那么如何检查特定的commnad行是否通过?
public class check {
public static void main(String[] args) {
if(args[0].length()!=0)
{
System.out.println("entered first if");
}
if(args[0].length()!=0 && args[1].length()!=0)
{
System.out.println("entered second if");
}
}
}
因此,在上面的代码中,如果未传递args [1],那么我将得到java.lang.ArrayIndexOutOfBoundsException:
所以我该如何解决这个问题,在这里我可以检查是否通过了第二项辩论,如果通过了,请输入第二项。尽快需要帮助。
如果您不传递任何参数,那么即使在这种情况下,args也会被初始化但没有任何项目/元素。尝试以下一项,您将获得相同的效果:
public static void main(String[] args) throws InterruptedException {
String [] dummy= new String [] {};
if(dummy[0] == null)
{
System.out.println("Proper Usage is: java program filename");
System.exit(0);
}
}
main
则将使用args
长度为零的数组调用该方法。
dummy[0]
数组索引超出范围!同理,如果您将程序(返回)更改为测试args[0]
并不带任何参数地运行它。
null
检查是不必要的,但您正确地认为该length
检查是必要的,