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

usr*_*ΛΩΝ 16 java syntax if-statement

请考虑以下未格式化的嵌套if-elseJava代码

if (condition 1)
if (condition 2)
action 1;
else
action 2;
Run Code Online (Sandbox Code Playgroud)

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

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

第1块:

if (condition 1) {
    if (condition 2) {
        action 1;
    } else
        action 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

第2块:

if (condition 1) {
    if (condition 2) {
        action 1;
    }
}
else {
    action 2;
}
Run Code Online (Sandbox Code Playgroud)

Vin*_*ele 26

文档:

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


Tha*_*omb 5

块1是正确的,如果没有括号的情况下,else链接到最近的if

if (condition 1)  
if (condition 2)
action 1;
else
action 2;
Run Code Online (Sandbox Code Playgroud)

是相同的

if (condition 1)
    if (condition 2)
    action 1;
    else
    action 2;
Run Code Online (Sandbox Code Playgroud)

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