到目前为止,我已经设法做了各种简单的事情,比如分配变量,计算什么不是,编译它们以及所有那些好东西......
本节是关于使用if
和else
语句的决策。这是代码:
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)
我知道代码中可能存在某个问题,但似乎无法找到它 - 而且我知道一旦我拥有它就会明显地显而易见!
您可能没有输入任何命令行参数,因此args
数组的长度为0,因此ArrayIndexOutOfBoundsException
。
首先检查长度,如果长度不是至少1,则将条件短路:
if (args.length >= 1 && args[0].equals("xyz"))
args[0]
将不会被评估,并且如果ArrayIndexOutOfBoundsException
是args.length >= 1
,将不会抛出false
,这使得整个条件false
。
if (argv.length > 0 && argv[0].equals("xyz")) {
…
} else {
…
}
为什么不添加一个检查以确定您的数组是否为空?就像是:
if(argv.length == 0)
{
argv[0] = "";
}
//everything else...