嵌套的if-else行为没有大括号

时间:2013-06-18 15:12:02

标签: java if-statement syntax

考虑以下未格式化的嵌套if-else Java代码

if (condition 1)
if (condition 2)
action 1;
else
action 2;

我的问题是:根据Java语言规范,如果else分支适用,该怎么办?

通过手工重新格式化和添加大括号,这两个中的哪一个是正确的?

第1区:

if (condition 1) {
    if (condition 2) {
        action 1;
    } else
        action 2;
    }
}

第2座:

if (condition 1) {
    if (condition 2) {
        action 1;
    }
}
else {
    action 2;
}

4 个答案:

答案 0 :(得分:25)

来自documentation

  

Java编程语言,如C和C ++以及它们之前的许多编程语言,任意地规定else子句属于它可能属于的最内层。

答案 1 :(得分:5)

第1块是正确的,如果没有括号的话 else与最近的if

相关联
if (condition 1)  
if (condition 2)
action 1;
else
action 2;

相同
if (condition 1)
    if (condition 2)
    action 1;
    else
    action 2;

括号也是为了理解水平和轻松。在较大的if else语句中,没有括号会使错误非常常见

答案 2 :(得分:4)

您可以尝试一下,发现else适用于内部if

http://ideone.com/iBorYi

这是不写这样的代码的好理由。很难阅读和理解正在发生的事情。

答案 3 :(得分:0)

只需2美分,就能获得更好的视觉效果。

括号内的所有内容都将被完全忽略。

   if (false) {
        if (true)
            System.out.println("1");
        else
            System.out.println("2");
    }