在 do-loop 中跳过迭代 (fortran)

Skip iterations in a do-loop (fortran)

我想循环 N 次迭代,但某些迭代在特定条件下应该是 "skipped"。 我知道我可以使用 goto 语句来做到这一点,例如:

       do i = 1, N
          if condition(i) goto 14
          ! Execute my iteration if condition(i) is false
    14    continue
       end do

但我有点害怕这些 goto 语句,我想知道是否有其他解决方案(我使用的是 fortran 90,但对任何解决方案都感兴趣,即使它需要较新的版本)。

试试这个

do i = 1, N
          if (condition(i)) cycle
          ! Execute my iteration if condition(i) is false
end do

如果您需要解释,请评论您需要澄清的内容。请注意,我已经删除了陈旧的 continue 和标记语句。

你也可以这样:

   do i = 1, N
      if ( .not. condition(i) ) then
         ! Execute my iteration if condition(i) is false
      endif
   end do