【发布时间】:2020-04-24 01:52:17
【问题描述】:
我想检查一个二维数组是否包含另一个一维数组的值。
do i=1,nlines
do j=1,nchecks(i)
if (type(i).eq.4) then
do k=1,nlines
do l=1,nchecks(k)
if (type(k).eq.3) then
if (ANY(con(i,j)==id(k))) then
...
但我遇到以下错误:
test1.f(98): error #6361: An array-valued argument is required in this context. [ANY]
if (ANY(conn(i,j)==id2(k))) then
我做错了什么?我也尝试过类似
do i=1,nlines
do j=1,nchecks(i)
if (type(i).eq.4) then
r1=conn(i,j)
do k=1,nlines
do l=1,nchecks(k)
if (type(k).eq.3) then
if (ANY(r1==id(k))) then
...
但这也带来了同样的错误。所有变量都正确定义,格式没有错误。我是否以错误的方式使用任何命令?
【问题讨论】:
-
是的,您错误地使用了
ANY。目前您只是在测试数组的单个标量元素,因此不需要ANY。但是,我们不知道循环中的内容,因此不可能知道您真正想要做什么。此外,您可以分别在内部j和l循环之外对i和k提升这些if测试和/或按外观重新排序循环。 -
第二个@RussF,也请不要说“所有变量都已正确定义”,向他们展示 - 变量声明对于理解问题至关重要。但到目前为止,正如 RussF 所暗示的那样,最好的方法是展示一个简短、完整的程序来显示您遇到的问题
-
这 - stackoverflow.com/questions/29631649/… - 可能有用。它甚至可能是重复的,但我没有仔细检查。
-
不,不是重复的,而是密切相关的
-
好吧,看起来微笑的人现在赢了@IanBush,这个问题已经重新打开了:-)
标签: arrays for-loop if-statement fortran