在任何循环语句的主体部分,都可用 break 和 continue 控制循环的流程。其中,break
用于强行退出循环,不执行循环中剩余的语句。而 continue 则停止执行当前的迭代,然
后退回循环起始处,开始下一次迭代。
下面这个程序向大家展示了 break 和 continue 在 for 和 while 循环中的例子:
//: c03:BreakAndContinue.java
// Demonstrates break and continue keywords.
import com.bruceeckel.simpletest.*;
public class BreakAndContinue {
static Test monitor = new Test();
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
if(i == 74) break; // Out of for loop
if(i % 9 != 0) continue; // Next iteration
System.out.println(i);
}
int i = 0;
// An "infinite loop":
while(true) {
i++;
int j = i * 27;
if(j == 1269) break; // Out of loop
if(i % 10 != 0) continue; // Top of loop
System.out.println(i);
}
monitor.expect(new String[] {
"0",
"9",
"18",
"27",
"36",
"45",
"54",
"63",
"72",
"10",
"20",
"30",
"40"
});
}
} ///:~
在这个 for 循环中,i 的值永远不会到达 100。因为一旦 i 到达 74,break 语句就会中断
循环。通常,只有在不知道中断条件何时满足时,才需要这样使用 break。只要 i 不能被
9 整除,continue 语句就会使程序流程返回循环的最开头(这使 i 值递增)。如果能够整
除,则将值显示出来。
第二部分向大家展示了一个“无穷循环”的情况。然而,循环内部有一个 break 语句,可中
止循环。除此以外,大家还会看到 continue 移回循环顶部,而不完成剩余的内容(所以
只有在 i 值能被 10 整除时才打印出值)。输出结果之所以显示 0,是由于 0%9 等于 0。
无穷循环的第二种形式是 for(;;)。编译器将 while(true)与 for(;;)看作同一回事。
用于强行退出循环,不执行循环中剩余的语句。而 continue 则停止执行当前的迭代,然
后退回循环起始处,开始下一次迭代。
下面这个程序向大家展示了 break 和 continue 在 for 和 while 循环中的例子:
//: c03:BreakAndContinue.java
// Demonstrates break and continue keywords.
import com.bruceeckel.simpletest.*;
public class BreakAndContinue {
static Test monitor = new Test();
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
if(i == 74) break; // Out of for loop
if(i % 9 != 0) continue; // Next iteration
System.out.println(i);
}
int i = 0;
// An "infinite loop":
while(true) {
i++;
int j = i * 27;
if(j == 1269) break; // Out of loop
if(i % 10 != 0) continue; // Top of loop
System.out.println(i);
}
monitor.expect(new String[] {
"0",
"9",
"18",
"27",
"36",
"45",
"54",
"63",
"72",
"10",
"20",
"30",
"40"
});
}
} ///:~
在这个 for 循环中,i 的值永远不会到达 100。因为一旦 i 到达 74,break 语句就会中断
循环。通常,只有在不知道中断条件何时满足时,才需要这样使用 break。只要 i 不能被
9 整除,continue 语句就会使程序流程返回循环的最开头(这使 i 值递增)。如果能够整
除,则将值显示出来。
第二部分向大家展示了一个“无穷循环”的情况。然而,循环内部有一个 break 语句,可中
止循环。除此以外,大家还会看到 continue 移回循环顶部,而不完成剩余的内容(所以
只有在 i 值能被 10 整除时才打印出值)。输出结果之所以显示 0,是由于 0%9 等于 0。
无穷循环的第二种形式是 for(;;)。编译器将 while(true)与 for(;;)看作同一回事。
所以具体选用哪个取决于自己的编程习惯。