爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5905|回复: 1

[经验总结] if语句报错

[复制链接]
发表于 2021-12-28 22:14:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 爱吃爱吃 于 2021-12-28 22:16 编辑

运用if 语句报错
do i=0,240
do j=0,288
do k=0,4
if ((ttestv(k,i,j).ge.0.).and.(ttestv(k,i,j).le.0.5)) then

nu=ttestv(k,i,j)
testv(k,i,j)=nu

else
testv(k,i,j)=-9999
end if
end do

end do
end do

fatal:The result of the conditional expression yields a missing value.
>> NCL can not determine branch, see ismissing function
这是因为里面的变量数ttestv有的是缺省值,所以if不能判断报错,只需要加上(.not.ismissing(ttestv(k,i,j))).,即


do i=0,240
do j=0,288
do k=0,4
if ((.not.ismissing(ttestv(k,i,j))).and.(ttestv(k,i,j).ge.0.).and.(ttestv(k,i,j).le.0.5)) then

nu=ttestv(k,i,j)
testv(k,i,j)=nu

else
testv(k,i,j)=-9999
end if
end do

end do
end do


密码修改失败请联系微信:mofangbao
 楼主| 发表于 2021-12-28 22:17:59 | 显示全部楼层

ncl报错

ncl用变量代替报错
do i=0,240
do j=0,288
do k=0,4
if ((.not.ismissing(ttestv(k,i,j))).and.(ttestv(k,i,j).ge.0.).and.(ttestv(k,i,j).le.0.5)) then
testv(k,i,j)=ttestv(k,i,j)
else
testv(k,i,j)=-9999
end if
end do
end do
end do
报错fatal:Assignment type mismatch, right hand side can't be coerced to type of left hand side但是不影响运行。
只要把里面的testv(k,i,j)=ttestv(k,i,j)改成
nu=ttestv(k,i,j)
testv(k,i,j)=nu

因为不能两个变量等,需要有个缓冲

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表