0

我不知道第二个 for 循环是否会被视为表示需要花括号的语句。

所以我要问的是这些for-loops

for (int i=1;i<a.length;i++){
    for (int j=0;j<a[i].length;j++){
        a[i][j] = b[i][j]-c[i][j];
    }
}

与这些意思相同for-loops

for (int i=1;i<a.length;i++)
    for (int j=0;j<a[i].length;j++)
        a[i][j] = b[i][j]-c[i][j];
4

6 回答 6

7

简短的回答:没有

长答案:您不必这样做,但应该这样做。它增加了代码的可读性,它可以让你免于无用的调试和深夜工作。此外,Oracle 的代码约定明确规定您应该始终使用大括号。

你也可以这样写:

for (int i=1;i<a.length;i++)
    for (int j=0;j<a[i].length;j++)
        if (a[i][j] > 500)
            if (checkForSomethingStupid(a[i][j]))
                a[i][j] = b[i][j]-c[i][j];
于 2013-01-26T00:11:33.243 回答
2

你不需要它,但是很多人认为大括号可以提高可读性,特别是在缩进可能不准确的情况下。例如:

for (int i=1;i<a.length;i++)
    for (int j=0;j<a[i].length;j++)
a[i][j] = b[i][j]-c[i][j];

如果你读得这么快,你可能不会意识到第三行被执行了多次。但在这种情况下...

for (int i=1;i<a.length;i++) {
    for (int j=0;j<a[i].length;j++) {
a[i][j] = b[i][j]-c[i][j];
    }
}

......这更明显。相信我,人们已经浪费了好几天的时间来寻找这样的错误!

这是另一个例子:

for (int i=1;i<a.length;i++) 
    for (int j=0;j<a[i].length;j++)
        a[i][j] = b[i][j]-c[i][j];
        count++;
于 2013-01-26T00:20:13.790 回答
1

你不需要大括号,因为它是一个语句。但强烈建议这样做,否则有一次你会出现编码错误。(添加一个语句时)

于 2013-01-26T00:11:48.503 回答
1

是的,它们是一样的。

因为花括号对于包含多个进一步的语句是必要的,但您在第一个语句之后只使用一个 for (使用另一个语句,但它包含在 for 循环中)。

然而,大括号的使用非常有用,因为它们简化了阅读,因此编写代码的更好方法是:

for (int i=1;i<a.length;i++)
{
    for (int j=0;j<a[i].length;j++)
    {
        a[i][j] = b[i][j]-c[i][j];
    }
}

即使,正如在这种情况下所说的那样,它们没有必要..

但是,在以下情况下:

for (int i=1;i<a.length;i++)
    for (int j=0;j<a[i].length;j++)
    {
        a[i][j] = b[i][j]-c[i][j];
        a[i][j] = a[i][j]*a[i][j]; //or anything other statement you want to do in this for-cycle
    }

第一个 for 循环不需要大括号,因为它只包含一个语句,第二个 for 循环需要大括号,因为它包含两个语句。

于 2013-01-26T00:13:29.787 回答
1

是的,两个循环都是一样的。但根据编码约定,即使循环块中只有一行代码,也建议使用 curly。这是为了保持代码的可读性。

于 2013-01-26T00:19:03.630 回答
0

正如其他人所提到的,这不是必需的,但通常被认为是良好的做法。

但是,有一种情况可能是必要的。如果您正在处理一个自动化工具对您强制执行代码质量限制的项目(例如 checkstyle 或 PMD),那么省略大括号可能会导致构建失败。

于 2013-01-26T00:43:35.230 回答