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

时间:2016-05-11 14:48:52

标签: fortran iteration fortran90 do-loops

我想循环N次迭代,但是有些迭代应该是"跳过"在特定条件下。 我知道我可以使用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但对任何解决方案都感兴趣,即使它需要更新的版本)。

2 个答案:

答案 0 :(得分:5)

试试这个

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

如果您需要解释,请评论您需要澄清的内容。请注意,我删除了过时的continue并标记了语句。

答案 1 :(得分:2)

你也可以这样:

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