在C#或Fortran 95循环中标记中断/继续?

时间:2012-04-21 20:59:43

标签: c# fortran break continue

我的任务是将C#中的循环转换为Fortran 95。

outerLoop:
  for(row = 0; row < numRows; rows++){
    for(col = 0; col < numCols; col++){
      if(mat[row][col] == 0)
        continue outerLoop;
      sum += mat[row][col];
    }
  }

正如你们中的一些人所看到的,这看起来类似于Java和Perl中使用的exit语句标签规范,据我所知,它用于打破具有嵌套循环的循环或“ if '语句而不仅仅是一个循环/语句。我对Java中的这个功能还不熟悉,所以我不确定它是否存在于其他任何地方,特别是在C#和Fortran 95中。

我在谷歌上四处寻找,但我没有找到任何东西。我很难制定在Google上使用的搜索字词,因此也可以考虑这些因素。

请注意:我不是在寻找补救措施;我只是在找自己找到答案的地方。

感谢您抽出时间阅读这篇文章。

2 个答案:

答案 0 :(得分:3)

有关Fortran 95中循环控制结构的示例,请参阅前一个Fortran问题中的示例代码,其中包含“cycle”和“exit”的示例用法:Reading comment lines correctly in an input file using Fortran 90 ,.

答案 1 :(得分:1)

我相信C#不支持这样的break x功能。您需要使用标志手动打破嵌套循环。

bool stop = false;
for (row = 0; row < numRows; rows++)
{
    for (col = 0; col < numCols; col++)
    {
        if (mat[row][col] == 0)
        {
            stop = true;
            break;
        }

        sum += mat[row][col];
    }

    if (stop)
        break;
}

更简单的替代方案包括goto语句(广泛不赞成);并将循环封装在专用方法中,在这种情况下,当您想要停止迭代时,只需return