2017-06-02 25 views
0

我试图用一个循环,将运行到2个阵列的所有元素都为0:而所有元素不为零的一个数组的Fortran

我在想这样做的:

DO WHILE(ALL(QueueST/=0) .AND. ALL(QueuePT/=0)) 
!here things to do 
END DO 

是那是正确的?有没有更好的办法 ? 关于:

DO  
IF(ALL(QueueST/=0) .AND. ALL(QueuePT/=0))THEN 
    EXIT 
END IF 
    !here things to do 
END DO 

它有什么不同?

回答

1

他们是不正确的。在DO而使用

DO WHILE(ALL(QueueST/=0) .OR. ALL(QueuePT/=0)) 

并且在第二形式

IF(ALL(QueueST==0) .AND. ALL(QueuePT==0)) EXIT 

两个条件句应该是彼此相对在这些两个版本。

+0

而且我认为应该在'while'循环中将'ALL'更改为'ANY'? – Dadep

+0

'do while(.not。(ALL(QueueST == 0).AND.ALL(QueuePT == 0)))''可能是最好的可读性 – agentp

相关问题