如果只在内部生成一个语句,你是否需要java中的双for循环括号?

时间:2013-01-26 00:10:26

标签: java for-loop

我不知道第二个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];

6 个答案:

答案 0 :(得分:7)

简答:

答案很长:你没必要但你应该这样做。它提高了代码的可读性,它可以帮助您避免无用的调试和深夜。此外,Oracle's code conventions明确指出您应该始终使用大括号。

你也可以这样写:

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

答案 1 :(得分: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];
    }
}

......这更加明显。相信我,人们浪费了DAYS来寻找这样的错误!

这是另一个例子:

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

答案 2 :(得分:1)

你不需要大括号,因为这是一个陈述。但强烈建议,否则有一次你会编码错误。 (当添加一个陈述时)

答案 3 :(得分:1)

是的,他们是一样的。

因为花括号必须包含多个进一步的语句,但是在第一个语句之后只使用一个(使用其他语句,但它包含在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-cycle不需要大括号,因为它只包含一个语句,secondo for-cycle需要括号,因为它包含两个语句。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

正如其他人所提到的那样,没有必要,但通常认为这是一种良好的做法。

但是,有可能需要。如果您正在开发一个项目,其中自动化工具对您执行代码质量限制(例如checkstyle或PMD),那么遗漏大括号可能会使构建失败。