我正在调试一个Fortran项目,其中有一些傻瓜继续进行循环索引的逻辑语句。感谢@Ross的评论,当前有问题的代码是:
integer:: nz=5,na=10,nb=10,nk=10,nxi=10
real(8),dimension(nz,na*nb*nk*nxi):: pi_ub
integer:: i,j,k
real(8), dimension(nz,na*nb*nk*nxi,na*nb*nk):: nnpc,nndiv,obj_func
do i=1,nz
do j=1,na*nb*nk*nxi
pi_ub(i,j)=some value
do k=1,na*nb*nk
nnpc(i,j,k)=some value
nndiv(i,j,k)=some value
end do
end do
end do
obj_func=0.0d0
do i=1,nz
do k=1,na*nb*nk
do j=1,na*nb*nk*nxi
!Want to show the value of pi_ub(5,910) when k=1
if (i==5 .and. j==910 .and. k==1) then
print *, "pi_ub(5,910)", pi_ub(5,910)
end if
!-----------------------------------------------------------
if (nnpc(i,j,k)<0.0d0 .or. nndiv(i,j,k)<0.0d0) then
exit
else if (nnpc(i,j,k) >=0.0d0 .and. nndiv(i,j,k)>0.0d0)
obj_func=some value
end if
!------------------------------------------------------------
end do
end do
end do
pi_ub(5,910)可以在两条虚线中没有if-endif句子的情况下正确打印。但是,如果有这样的if句子,则不会打印任何内容。似乎“退出”命令搞砸了。但是不应该在“退出”运行之前编码吗?非常感谢!
答案 0 :(得分:0)
跟进:好的,我对&#34;退出&#34;的理解是错的。代码在&#34; i == 5之前退出循环。 j == 910。并且。满足K == 1&#34; evoked,执行打印命令。所以这一切都有道理