我不知道第二个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];
答案 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),那么遗漏大括号可能会使构建失败。