0
class Ex_ex
{
    public static void main(String[] args)
    {

         if (args[0].equals("first"))
             if (args[1].equals("second")) //Expected exception here LINE1
             {
                 System.out.println("first..second");
             }
             else 
             {
                System.out.println("nothing "+ args[1]);
             }

     }
}

我从命令行执行了这个程序我给出了以下命令

“java Ex_ex 测试”

test 是 args[0] 并且 args[1] 没有给出。

我以为我会在第 1 行遇到运行时异常,因为它尝试访问不存在的 args[1] ...但我没有遇到异常。

有人能告诉我为什么吗?

4

3 回答 3

5

您的第二条if语句在第一条if语句中。if因此,仅当第一个条件评估为时才会执行true

由于args[0]您正在传递 is ,它将使外部条件test失败,内部条件将不会被执行,因此不会引发异常。ifif

尝试执行您的代码,例如:

java Ex_ex first
于 2013-08-25T12:28:53.690 回答
4

args[0]不等于“第一”,所以它没有进入内部if声明。你明白那些是嵌套if语句,对吧?

于 2013-08-25T12:28:43.173 回答
1

因为它没有通过第一个 if 语句

if (args[0].equals("first"))

所以它不会到达第二个 if 语句,因此不会被抛出

于 2013-08-25T12:29:29.027 回答