我有一个数组,我希望从中获得一些信息。
我写了一个小的DO循环,但我不知道它为什么总是返回
integer :: inn=0
parameter :: m=115200
real*8 :: da1(m)
DO i=1, 115200
IF( i<=19200 .and. da1(i)>1 .and. da1(i)<999.9999 .and. da1(i)<-1 )then
inn=inn+1
END IF
END DO
write(*,*) 'inn=',inn
答案 0 :(得分:2)
问题在于您的条件:
da1(i).gt.1.00 .and. da1(i).lt.999.9999 .and. da1(i).lt.-1.000
一个数字(此处:da1(i)
)如何同时为> 1
和< -1
?该条件始终为false,inn
永远不会递增。
答案 1 :(得分:2)
扩展评论而不是回答。循环可以完全替换,可能是
count( da1(1:19200)>1 .and. da1(1:19200)<999.999 )
我写可能因为我没有测试过这个。
我认为在i = 1, 115200
范围内循环,然后在循环内部测试i<=19200
是错误的。如果要循环,请写i = 1, 19200
。