adr*_*ian 18 java break while-loop
假设我有这个:
while(a){
while(b){
if(b == 10)
break;
}
}
Run Code Online (Sandbox Code Playgroud)
问题: break语句是否会将我从两个循环中取出或仅从内循环中取出?谢谢.
Iva*_*lik 32
它只会破坏最直接的while循环.使用标签,你可以打破这两个循环的:看看这个例子取自这里
public class Test {
public static void main(String[] args) {
outerloop:
for (int i=0; i < 5; i++) {
for (int j=0; j < 5; j++) {
if (i * j > 6) {
System.out.println("Breaking");
break outerloop;
}
System.out.println(i + " " + j);
}
}
System.out.println("Done");
}
}
Run Code Online (Sandbox Code Playgroud)
Abh*_*mar 29
在你的示例中,break语句将带你离开while(b)循环
while(a) {
while(b) {
if(b == 10) {
break;
}
}
// break will take you here.
}
Run Code Online (Sandbox Code Playgroud)
Jig*_*shi 11
只有从内部一个,如果你想打破特定的循环,使用带标记的中断
label1:
for(){
label2:
for(){
if(condition1)
break label1;//break outerloop
if(condition2)
break label2;//break innerloop
}
}
Run Code Online (Sandbox Code Playgroud)
另见
while (a) {
while (b) {
if (b == 10) {
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,您将打破最内层循环,其中(即.immediate loop)使用where break.
您可以使用with 一次性中断两个循环breaklabel
label1:
while (a) {
while (b) {
if (b == 10) {
break label1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它将打破立即封闭的循环。
但是,您可以断开标签:
myLabel:
while(a) {
while(b) {
if(b == 10)
break myLabel;
}
}
Run Code Online (Sandbox Code Playgroud)
我一般不喜欢使用这种模式,因为它很容易导致意大利细面条代码。使用无标签的中断或标志来终止循环。
@阿布希舍库玛
Break关键字具有从C和Assembly派生的根,而Break的唯一目的是将控制权从复合语句(即Loop,Condition,Method或Procedures)中传递出去。
请参考这些...
http://tigcc.ticalc.org/doc/keywords.html#break
http://www.functionx.com/cpp/keywords/break.htm
http://en.wikipedia.org/wiki/Break_statement#Early_exit_from_loops
因此,如果要同时退出两个循环,则必须使用两个Break,即一个在内部循环中,一个在外部循环中。
但是要同时停止两个循环,则必须使用exit或return。
| 归档时间: |
|
| 查看次数: |
74870 次 |
| 最近记录: |