发生「null参数报错」的正确解决方法

2019-09-10 07:22
电脑报 2019年17期
关键词:关卡通关代码

「无箭狼」这是一个非常简单的关卡,但不少同学在闯关的时候容易误解关卡意思,导致卡关。本关的通关目标是收集15个蘑菇。

而进入游戏时的目标页告诉我们,这片森林里存在着危险的食人魔猎手,所以我们必须要唤醒我们的宠物狼来帮助我们抵御箭矢。根据注释,我们首先需要唤醒宠物狼,只需要走到宠物狼的身边说点什么即可。随后小狼就醒来了,而第二行注释则要求开始收集蘑菇。

可能是受第一行注释的误导,不少同学觉得,唤醒宠物狼以后不用让宠物狼做点什么吗?于是潜意识认为,下一行代码是让宠物狼帮忙去收集蘑菇。然后就使用pet.fetch()语句来让宠物狼收集蘑菇。那么此时便会发生问题:如果宠物狼去收集蘑菇了,那么谁来保护英雄抵御箭矢呢?

所以此时要求的,其实是让英雄自己去收集,而根据提示,我们能够知道,只需要让宠物狼跟在我们身边,就能自动帮助我们抵御箭矢。因此,正确的过关思路应该是:英雄唤醒宠物狼——英雄收集蘑菇。根据通关思路,完成代码。

此时大家的代码可能是这样写的,而这样写也确实能够直接过关,但是这样并不是一个真正正确的过关代码。像这个错误,大家或许在前面的关卡偶尔会见到过。报错的内容是:attack的参数接收到了null。

可能每个字大家都认识,但是串起来以后就不太明白具体的意思了,null这个单词的意思是「空」、「不存在的」,那么我们看看此处attack的参数是什么?

是我们传入的enemy变量,是搜索敌人后得到的变量,此处的报错正是说明我们向attack函数内传入的enemy变量,不存在。这也就是说明,此时我们并没有在周围发现敌人,因此我们的attack函数便失去了攻击的目标,不知道目标,但程序仍然要执行这一行代码,此时就会发生图中这样的报错。因此,解决的办法就是,在执行函数前,先判断一下我们的变量是否存在。

使用if条件判断语句来判断变量,如果变量为null,是一个空值,那么此时的条件就无法满足,因为一个不存在的值是没有办法讓条件成立的,则下方函数就不会在变量不存在的时候被执行,避免了发生代码错误。除了enemy敌人变量,像物品item之类的变量,在被函数使用之前,也都需要使用if来检查一下,避免发生报错,因此,本关的正确通关代码。

猜你喜欢
关卡通关代码
开七窍的混沌大帝又活了:修辞通关①
假作真时真亦假:逻辑通关②
电塔岛历险
疯狂冒险岛
博物馆通关小列车
通关手
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
近期连续上涨7天以上的股