我想知道如果不满足if
条件,如何重复第一个循环是可能的。虽然我一直在尝试使用goto
语句,但它给了我遗留错误。我该如何解决这个问题?
10 do i=0,izmax
some code
do j=jmin,jmax
some other code
enddo
enddo
do i=0,izmax
if (x < y) then
write
else goto 10
enddo
在其他情况下,当循环中只有一个东西应该重复时,方法是什么?我的意思是
do i=0,izmax
some code
do j=jmin,jmax
some other code
enddo
10 statement to be repeated
enddo
do i=0,izmax
if (x < y) then
write
else goto 10
enddo
答案 0 :(得分:1)
notdone=.true.
do while(notdone)
do i=0,izmax
first loop
enddo
notdone=.false.
do i=0,izmax
if (x < y) then
write
else
notdone=.true.
exit !exits inner loop
endif
enddo
enddo
答案 1 :(得分:1)
您可以使用命名循环,将其设置为连续执行,但最后会有from logging import handlers
fname = getattr(log, "rot_access_file", "access.log") #The log for access messsages.
h = handlers.TimedRotatingFileHandler(fname, when='midnight')
h.setLevel(logging.DEBUG)
h.setFormatter(_cplogging.logfmt)
log.access_file = ""
log.access_log.addHandler(h)
语句。然后,如果需要,您可以在到达结尾之前exit
外循环。
cycle
你的第二个问题更难理解。该程序再次完成outer : do
do i = 0, izmax
! First Loop
end do
do i = 0, izmax
if (x < y) then
write(*, *) "Need to do again"
cycle outer
end if
end do
exit outer
end do outer
后应该执行什么操作。它应该再次进入那个循环吗?它应该立即退出第一个循环并重新启动第二个循环吗?
我认为重复该语句可能更容易,或者将其放在子程序中,从第一个循环内部调用,再从需要再次执行的地方调用。