不带大括号的嵌套 if-else 行为

2022-09-02 23:49:28

请考虑以下无格式嵌套 Java 代码if-else

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;
}

答案 1

来自 Java 语言规范

Java编程语言,如C和C++以及之前的许多编程语言,武断地规定 else 子句属于最内层的(如果它可能属于该子句)。


答案 2

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

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

与 相同

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

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