在下面的例子中,在外部循环条件变为false之后,内部while循环是否继续执行它的语句2?或者,一旦外部while循环条件变为false,即使内部while循环的条件为真,ENTIRE循环也会退出,包括内部while循环?
while (becomes false){
statements 1;
statements 1;
while ( true at the time the outer loop condition become false){
statements 2;
statements 2;
}
}
println("print something interesting");
答案 0 :(得分:0)
如果外部循环为真,则仅执行内部循环(针对条件进行测试)。否则,如果外部循环中断,嵌套循环就没有机会被执行。
答案 1 :(得分:0)
首先,while
循环条件仅在每次迭代开始时检查。
如果在外循环迭代开始时,条件为false
,则contol将被转移到外循环之后的语句,从而绕过内循环。
答案 2 :(得分:0)
将代码块(也称为花括号)中的代码视为门。如果你不满足要求进入门,那么你无法看到里面的任何东西。所以没有内部循环(因为外部循环是假的)将不会执行。
答案 3 :(得分:0)
了解while循环的工作原理可能会有所帮助。如果你写:
while(myCondition) {
doSomething();
doSomethingElse();
}
println("print something interesting");
然后它基本上变成(伪代码):
1. if myCondition continue to line 2, else go to line 5
2. doSomething()
3. doSomethingElse()
4. go to line 1
5. println "print something interesting"
如您所见,仅在第1行检查条件。例如,如果{2}在第2行期间变为假,则没有什么可以使块短路。 (如果您需要,则必须手动重新测试myCondition
,如果错误则调用myCondition
。)即使break
被doSomething()
循环替换,也是如此,while
循环或其他任何内容。
因此,如果“语句2”使外部循环条件为假,则不会停止任何操作。程序将以快乐的方式进行,直到内部循环结束,此时out循环完成其迭代(因为在外部循环块内的内部循环之后没有任何内容)并返回重新测试其条件以查看它是否应该开始另一次迭代。只有这样外循环才能检查它的状态。
为了使它更明确,以下是您的代码基本上如何工作:
for
因此,外部条件仅在第1行 检查。如果它在任何时候都变为false,则循环甚至不会注意到它到达第1行,这只会发生在第1行到达第8行(当然第一次遇到第1行开始1. if outer-condition continue to line 2, else go to line 9
2. statements-1
3. statements-2
4. if inner-condition continue to line 5, else go to line 8
5. statements-2
6. statements-2
7. go to line 4
8. go to line 1
9. println "print something interesting"
循环)。
答案 4 :(得分:0)
使用局部变量来控制循环,以便在循环2中检查此值。