嵌套if - else in java

时间:2016-08-14 16:18:02

标签: java if-statement

我正准备参加OCA 8考试......

在enthuware测试中有一个问题,下面代码的正确结构是什么(如果属于哪个其他代码 - 没有大括号)?

...

if
    statement 1;
if
    statement 2;
else
    statement 3;
else
    statement 4;

...

enthuware提供的答案是这样的......

if //statement 1
|  if //statement 2
|  |
|  else //statement 3
else //statement 4

但是当我在eclipse中执行代码(没有大括号)时,我在最后的其他地方得到了一个编译时错误......

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Syntax error on token "else", delete this token

那么,这是正确/有效/可能吗?

3 个答案:

答案 0 :(得分:0)

如果你不放大括号,只考虑if()之后的第一个语句。在您的情况下,两个if语句是嵌套的,但第一个else语句用于父if,第二个else因此没有if

答案 1 :(得分:-1)

如果没有括号,每个条件后面只有一个语句,所以:

[37;41m                                 [39;49m
[37;41m  [BadMethodCallException]       [39;49m
[37;41m  Method filter does not exist.  [39;49m
[37;41m                                 [39;49m

如果if(value) Sys.out.print("Cow"); Sys.out.print("Rabbit"); 为真,则会打印"Cow"。但是,每次都会打印value。要确保执行两个/多个指令,具体取决于if语句,您必须使用块,如:

"Rabbit"

所以当没有括号时,它不会编译为:

if(value){
 Sys.out.print("Cow");
 Sys.out.print("Rabbit");
}

这被视为一个,只有一个被认为是if语句。第一个"如果"只是一个独立的if语句,因此第二个else语句是错误的,因为它之前没有if语句。

答案 2 :(得分:-1)

没有花括号:

if (true)
         System.out.println("First if");
    else
        if (true)
            System.out.println("second if, first else");
        else
            System.out.println("second if, second else");

    System.out.println("outside statement");

虽然我强烈建议添加它们:

 if (true) {
        System.out.println("First if");
    } else if (true) {
        System.out.println("second if, first else");
    } else {
        System.out.println("second if, second else");
    }

    System.out.println("outside statement");