1

我已经搜索过 SO 并且可以找到解决类似主题的问题,但对于这个特定的问题和语言却没有。在阅读了一些问答但没有找到答案后,我搜索了并得到零结果。

我在大学测验中被问过这个问题:

如果我有:

int n = 3;
   for (int i = 1; i <= n; i++)  {
      System.out.print(" x ");
        for (int j = 1; j <= n; j++)  {
         System.out.println(" x ");
           continue;
           //no content here
        }
     }

continue 语句后没有任何内容;这个使用如何continue影响这个循环?它是否会导致循环是否继续迭代的第二个循环中断?

4

3 回答 3

5

continue没有标签的语句将从条件中重新执行最里面的 while 或 do 或循环,并从更新表达式重新执行最里面的 for 循环。它通常用于提前终止循环的处理,从而避免深度嵌套的 if 语句。

因此,对于您的程序,关键continue工作没有多大意义。它被用作一种逃避的东西。例如:

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;

说,如果你修改你的程序,如:

int n = 3;
   for (int i = 1; i <= n; i++)  {
      System.out.print(" x ");
        for (int j = 1; j <= n; j++)  {
         if(j%2!=0)
         {
          System.out.println(" x ");
          continue;
         }
         else
         break;
     }

这将打破 j=2 的内部for 循环。希望你能理解。:)

于 2013-10-13T06:45:43.133 回答
3

你的问题的答案:

使用 continue 对这个循环有何影响?它是否会导致循环是否继续迭代的第二个循环中断?

是:

第二个循环不会中断,它会继续迭代。break关键字用于中断循环。

编辑

假设你有for循环:

for(int i = 0; i < 5; i++){
   continue;
}

continuein for 执行for循环(i++)的语句以继续下一次迭代。

在其他循环中,while{}否则do{}while();事情不会这样,可能会导致无限循环。

于 2013-10-13T06:49:00.773 回答
3

如果 下有代码continue,那将是死代码(无法访问的代码)。

你写它的方式,它没有效果,因为它已经是最后一行了。如果没有 ,则循环将继续continue;

这两个代码块具有相同的效果:

for(int i = 0; i < 10; i++) {
   // .. code ..
}

for(int i = 0; i < 10; i++) {
   // .. code ..
   continue;
}

但是,以下代码段包含无法访问的代码:

for(int i = 0; i < 10; i++) {
   // .. code ..
   continue;
   // .. unreachable code ..
}
于 2013-10-13T06:49:45.707 回答