0

在下面的示例中,在外部循环条件变为 false 后,内部 while 循环是否继续执行它的语句 2?或者一旦外部while循环条件变为假,即使内部while循环的条件为真,整个循环也会退出,包括内部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");  
4

5 回答 5

0

只有当外循环为真时,内循环才会被执行(测试条件)。否则如果外循环中断,嵌套循环就没有机会被执行。

于 2013-04-08T07:13:31.177 回答
0

首先,while循环条件只在每次迭代开始时检查。

如果在外循环迭代开始时,条件为false,则将 contol 转移到外循环之后的语句,从而绕过内循环。

于 2013-04-08T07:13:59.033 回答
0

将代码块(又名大括号)中的代码视为一扇门。如果您不符合进入门的要求,那么您将看不到里面的任何东西。所以没有内循环(因为外循环是假的)不会执行。

于 2013-04-08T07:25:41.203 回答
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 行检查条件myCondition。例如,如果在第 2 行期间变为假,则没有任何东西可以使块短路。(如果需要,您必须手动重新测试myCondition并调用break如果它是错误的。)即使doSomething()while循环、for循环或其他任何东西替换,这也是正确的。

因此,如果“语句 2”使外循环条件为假,则不会停止。程序将继续进行下去,直到内循环完成,此时外循环完成它的迭代(因为在外循环块内的内循环之后没有任何内容)并返回重新测试它的条件以查看它是否应该开始另一个迭代。只有这样,外循环才会检查它的状况。

为了使它更明确一点,您的代码基本上是这样工作的:

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"

因此,外部条件在第 1 行检查。如果它在任何时候变为 false,循环甚至不会注意到,直到它到达第 1 行,这只会在它到达第 8 行时发生(或第一次它当然,点击第 1 行开始while循环)。

于 2013-04-08T07:29:38.300 回答
0

使用局部变量来控制循环,以便您可以在循环 2 中检查该值。

于 2013-04-08T08:07:01.197 回答