这就是为什么它是很好的做法,始终环绕有块大括号,即使他们只有一条线。这是你的代码,正确缩进:
for (row = 0; row < NUM_DOWN; row++)
for (column = 0; column < NUM_ACROSS; column++) {
if (column == 0 || column == NUM_ACROSS)
System.out.print("*");
else if (row == 1 || row == NUM_DOWN-1)
System.out.print("*");
else
System.out.print (" ");
}
{
System.out.println();
你System.out.println(" ");
,其中写入了新的生产线,是之外的您的循环,所以它只能调用一次,在最后。
这是怎么循环应该写成:
for (row = 0; row < NUM_DOWN; row++) {
for (column = 0; column < NUM_ACROSS; column++) {
if (column == 0 || column == NUM_ACROSS) {
System.out.print("*");
} else if (row == 1 || row == NUM_DOWN-1) {
System.out.print("*");
} else {
System.out.print (" ");
}
} // end inner for
System.out.println();
} // end outer for
说明关于括号
在Java中,如果一个for循环或if语句只有在单行它,在技术上可以省略大括号。因此,这是发现:
if (column == 0 || column == NUM_ACROSS)
System.out.print("");
如果有两条线,但是,大括号是必要的:
if(column == 0 || column == NUM_ACROSS) {
System.out.print("");
doSomething();
}
的if-else语句的if-else树计为内一个单一的 “行”一个for-loop,所以大括号在技术上是没有必要的。这是有效的:
for (column = 0; column < NUM_ACROSS; column++)
if (column == 0 || column == NUM_ACROSS)
System.out.print("*");
else if (row == 1 || row == NUM_DOWN-1)
System.out.print("*");
else
System.out.print (" ");
同样,整个for循环计为外内单行for循环:
for (row = 0; row < NUM_DOWN; row++)
for (column = 0; column < NUM_ACROSS; column++)
if (column == 0 || column == NUM_ACROSS)
System.out.print("*");
else if (row == 1 || row == NUM_DOWN-1)
System.out.print("*");
else
System.out.print (" ");
// this line is inside of neither for-loop because of the lack of braces:
System.out.println();
在一般情况下,它是所有程序员好的做法,无论其级别或能力如何,都要用大括号包围它们的代码块,以避免语法上的歧义。在多个程序员的情况下,这种省略花括号的做法可能会变得很危险,甚至会导致代码严重缩进。考虑原始文章中的代码 - 你能一目了然地告诉哪些嵌套在哪个或包含在哪个循环中?
另一个例子,缺乏花括号可能会有意想不到的后果。考虑你需要打印的“上半场”如果有一天低于15 situtation,并打印“月”,如果一个月11.下列代码
if (day < 6)
System.out.println("First half.");
if (month == 11)
System.out.println("November.");
假设项目需求的变化和你”重新不再应该打印出“上半年”如果有一天低于15一些有用的实习生进来,评论了该行:
if (day < 15)
// System.out.println("First half.");
if (month == 11)
System.out.println("November.");
这样行吗?没有!现在你已经打破了你的十一月情况下,因为上面的代码在语义上是相同的:
if (day < 15)
if (month == 11)
System.out.println("November.");
如果我们一直在使用大括号一直以来,我们就罚款:
if (day < 15) {
// System.out.println("First half.");
}
if (month == 11) {
System.out.println("November.");
}
毫无疑问,有其他六个原因和例子为什么这是最佳做法。养成总是使用大括号的习惯,即使它意味着每隔一段时间输入一些额外的字符,毫无疑问将帮助您保持代码正常工作,并减少可能遇到的编译错误和其他错误的数量。
你可以发布一些编译? – Fildor
仔细看看你的牙套。 – SLaks
你的第一个for循环没有正确的大括号。 –