这将继续导致嵌套的for循环做什么?

时间:2013-10-13 06:38:46

标签: java for-loop continue

我搜索了SO,可以找到解决类似主题的问题,但没有针对这个具体问题和语言。在阅读了一些Q& A但未找到答案后,我搜索了,结果为零。

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

如果我有:

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影响此循环?是否会导致循环继续迭代的第二个循环中断?

3 个答案:

答案 0 :(得分:4)

没有标签的continue语句将从最里面的while或do或loop循环的条件重新执行,并从更新表达式中重新执行最里面的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循环。希望你能理解。 :)

答案 1 :(得分:3)

你的问题的答案:

这种使用继续如何影响此循环?是否会导致循环继续迭代的第二个循环中断?

是:

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

修改

假设你有for循环:

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

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

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

答案 2 :(得分: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 ..
}