【转载】发生「null参数报错」的正确解决方法 | 亲子课堂 第 13 课
森林
地牢里的关卡主要是偏向锻炼用户的基本语法结构和计算机思维,让大家熟悉极客战记的操作与代码的使用。
来到了森林,关卡将会变得更多更难,同样,到了森林,大家就正式开始接触编程的几大重要知识点:
条件判断
运算符
函数
对象属性
无箭狼
关卡简介:
「无箭狼」这是一个非常简单的关卡,但不少同学在闯关的时候容易误解关卡意思,导致卡关。
通关展示:
思路讲解
本关的通关目标是收集15个蘑菇。
而进入游戏时的目标页告诉我们,这片森林里存在着危险的食人魔猎手,所以我们必须要唤醒我们的宠物狼来帮助我们抵御箭矢。
根据注释,我们首先需要唤醒宠物狼,只需要走到宠物狼的身边说点什么即可。
随后小狼就醒来了,而第二行注释则要求开始收集蘑菇。
可能是受第一行注释的误导,不少同学觉得,唤醒宠物狼以后不用让宠物狼做点什么吗?
于是潜意识认为,下一行代码是让宠物狼帮忙去收集蘑菇。
然后就使用pet.fetch()语句来让宠物狼收集蘑菇。
那么此时便会发生问题:
如果宠物狼去收集蘑菇了,那么谁来保护英雄抵御箭矢呢?
所以此时要求的,其实是让英雄自己去收集,而根据提示,我们能够知道,只需要让宠物狼跟在我们身边,就能自动帮助我们抵御箭矢。
因此,正确的过关思路应该是:
- 英雄唤醒宠物狼
- 英雄收集蘑菇
根据通关思路,完成代码:
此时大家的代码可能是这样写的,而这样写也确实能够直接过关。
但是这样并不是一个真正正确的过关代码。
像上方这个错误,大家或许在前面的关卡偶尔会见到过。
报错的内容是:attack的参数接收到了null
可能每个字大家都认识,但是串起来以后就不太明白具体的意思了,null这个单词的意思是「空」、「不存在的」,那么我们看看此处attack的参数是什么?
是我们传入的enemy变量,是搜索敌人后得到的变量,此处的报错正是说明我们向attack函数内传入的enemy变量,不存在。
这也就是说明,此时我们并没有在周围有发现敌人,因此我们的attack函数便失去了攻击的目标,不知道目标,但程序仍然要执行这一行代码,此时就会发生图中这样的报错:
因此,解决的办法就是,在执行函数前,先判断一下我们的变量是否存在:
像这样,使用if条件判断语句来判断变量,如果变量为null,是一个空值,那么此时的条件就无法满足,因为一个不存在的值是没有办法让条件成立的,则下方函数就不会在变量不存在的时候被执行,避免了发生代码错误。
除了enemy敌人变量,像物品item之类的变量,在被函数使用之前,也都需要使用if来检查一下,避免发生报错,因此,本关的正确通关代码应是如下。
通关代码
以上便是森林关卡「无箭狼」的过关教学了~
本攻略发于极客战记
极客战记——学编程,用玩的!