获取参数时数组索引超出范围

时间:2013-10-22 19:43:39

标签: java indexoutofboundsexception

到目前为止,我已经设法做了各种简单的事情,比如分配变量,计算什么不做,编译它们以及所有那些好东西......

本节介绍使用ifelse语句做出的决策。这是代码:

public class Decision 
{
    public static void main(String[] args)
    {
        if (argv[0].equals("xyz"))
            System.out.println("Login successful");
        else 
            System.out.println("Login incorrect");  
    }
}

所以我在CMD中编译程序并尝试运行它,但我明白了:

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0在Decision.main(Decision.java:5)

我知道代码中可能存在某个问题,但似乎无法找到它 - 而且我知道一旦我拥有它就会显而易见!

4 个答案:

答案 0 :(得分:6)

您可能没有输入任何命令行参数,因此args数组的长度为0,因此ArrayIndexOutOfBoundsException

首先检查长度,如果长度不是至少1,则将条件短路:

if (args.length >= 1 && args[0].equals("xyz"))

args[0]将不会被评估,如果ArrayIndexOutOfBoundsExceptionargs.length >= 1,则不会抛出false,这会使整个条件false

答案 1 :(得分:1)

if (argv.length > 0 && argv[0].equals("xyz")) {
   …
} else {
   …
}

答案 2 :(得分:1)

您已经在args参数中声明了main(),但是检查了argv[]

答案 3 :(得分:-1)

为什么不添加支票来查看您的数组是否为空?类似的东西:

if(argv.length == 0)
{
    argv[0] = "";
}
//everything else...