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

Posted

技术标签:

【中文标题】这将继续导致嵌套的 for 循环做啥?【英文标题】:What will this continue cause the nested for-loop to do?这将继续导致嵌套的 for 循环做什么? 【发布时间】:2013-10-13 06:38:46 【问题描述】:

我已经搜索过 SO,可以找到解决类似主题的问题,但没有针对这个特定问题和语言的问题。在阅读了一些问答并没有找到答案后,我搜索了java、for-loop 和continue,结果为零。

我在一次大学测验中被问到这个问题:

如果我有:

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

【问题讨论】:

这样设置continue 是没有意义的。删除它会给你同样的行为。基本上,它用于继续当前循环的迭代,而不进一步移动。 ***.com/questions/389741/continue-keyword-in-java 【参考方案1】:

不带标签的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 的 inner for 循环。希望你能理解。 :)

【讨论】:

您的问题似乎含糊不清。放在内部 for 循环中的 continue 关键字没有意义。即使您删除关键字,它也不会产生任何影响。最好了解continue 的使用方式和时间,不要在任何地方随意使用。【参考方案2】:

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

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

这两段代码的效果是一样的:

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


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

但是,下面的 sn-p 有无法访问的代码:

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

【讨论】:

【参考方案3】:

你的问题的答案:

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

是:

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

编辑

假设你有for循环:

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

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

在其他循环中,whiledowhile(); 不会是这样,可能会导致无限循环。

【讨论】:

以上是关于这将继续导致嵌套的 for 循环做啥?的主要内容,如果未能解决你的问题,请参考以下文章

继续嵌套 for 循环

Java for 嵌套循环

在嵌套的 while 循环中继续

在 C 中的嵌套循环内继续

在 for 循环期间访问嵌套对象 VueJS

JS中for循环嵌套打印100以内3的倍数?