1

到目前为止,我已经设法完成了各种简单的事情,例如分配给变量、计算等等,编译它以及所有这些好东西……</p>

本节是关于使用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 at Decision.main(Decision.java:5)

我知道代码中可能存在问题,但似乎找不到 - 而且我知道一旦我有了它就会很明显!

4

4 回答 4

8

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

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

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

args[0]不会被评估,也不会抛出一个ArrayIndexOutOfBoundsException, if args.length >= 1is false,这使得整个条件false

于 2013-10-22T19:45:12.873 回答
1

您已argsmain()参数中声明,但检查了argv[].

于 2020-08-31T15:56:54.003 回答
0
if (argv.length > 0 && argv[0].equals("xyz")) {
   …
} else {
   …
}
于 2013-10-22T19:46:30.987 回答
-2

为什么不只添加一个检查以查看您的数组是否为空?就像是:

if(argv.length == 0)
{
    argv[0] = "";
}
//everything else...
于 2013-10-25T15:59:42.947 回答