我尝试运行一个小的c#和java程序(使用VS和NetBeans而不是命令行)并打印args [0]的值,但我得到了IndexOutOfRangeException
。
我知道args
用于传递命令行参数,但在main方法中它是仍然,所以如果没有args
参数,程序将如何运行传递给它?
答案 0 :(得分:5)
那么如果没有传递args参数,程序将如何运行? 创建程序时,将分配一个新数组并使用命令行中的值填充该数组。
如果没有(因为你没有在IDE中指定它们),那么数组将为空(非空,至少不是Java)
哟避免让你的IndexOutOfRangeException
要么不使用参数,要么分配默认值并验证args数组长度。
例如(在Java中)
public class YourClass {
public static void main( String [] args ) {
String param = "someDefault";
// validate args.length
if( args.length > 0 ) { // if there is a parameter
param = args[0]; // use it
}
// continue with "param" already defined.
}
}
答案 1 :(得分:3)
Java允许空数组;即。
String[] args = new String[0];
自index >= args.length
以来,异常是一致的。
关于这一特定主题,还有一个注意事项:与C程序不同,arg 0不是程序本身。因此,使用空数组调用main(String[])
是很常见的。
答案 2 :(得分:1)
如果没有参数,则数组将为空 - 如果没有传递数组,则会有NullReferenceException
。
答案 3 :(得分:0)
如果在命令行上传递它们,则args []数组中只有元素。
java my.test.MyTest arg1 arg2
这将导致参数arg1和arg2在arg []数组中传递。如果你没有传递参数,那么arg []数组的长度为0,因此访问任何索引都会引发异常。
答案 4 :(得分:0)
在某些情况下,在调用命令行exe时不包含任何args是完全合理的。 args
参数是为了告诉您是否传递了args,如果是,那么它们是什么。