前面几节我们解决了按键的输入问题,并且为按键加入了防抖功能,确保了按键后数据的精确输入,也成功的将输入的键值提交给了我们预设的字符串储存用的变量inputText
。现在我们需要再增加一个变量以及一个列表,可以分别命名为“cache”和“cacheList”,前者用于提取inputText
的指定字段,后者则用于存储分割后的数据。在计算机编程语言中,有的语言强调数据的类型,字符是字符,数字是数字,两者间相互转换需要使用特定的指令,否则程序就会报错,这类语言称为强类型语言。而我们的Scratch可以理解成弱类型的编程工具,所以从inputText
这个字符串中提取出来的字符,可以直接参与运算。
实例下载
实现过程
接下来我们来自定义一块自制积木,命名为“数据处理”,让它在inputText
每次获取到数据之后就执行一次,“数据处理”是整个计算器程序中最为关键的部分,会积累很多个判断,但因为每次遇到任一特殊字符就会处理数据,所以不容易产生冲突的情况。
首先来解决遇到运算符的时候的情况,每次遇到运算符,我们就把inputText
分成数字与运算符两部分,依次存入“cacheList”列表。
当列表中的项目等于(等号的情况我们不需要把等号放入列表,所以只会产生3项)或者大于3项的时候,我们把第一项与第三项根据第二项的符号操作取值,把值存入列表第3项,再删除前两项,列表中的数据变化如下:
依次输入1,+,5,-
第一项 1
第二项 +
第三项 5
第四项 -
满足条件开始操作列表
第一项 1
第二项 +
第三项 1+5 =6
第四项 -
删除前两项,后面的项数自动提升
第一项 1+5 =6
第二项 -
也就是说,第一项存储的始终是上一次运算结束后的值。
计算器的计算功能已经初见雏形,但是我们还需要来完善一些按钮功能以及处理一些特殊情况。
当inputText
存在字母“c”的时候我们要做清屏的操作,包含“d”的时候则删除掉inputText
的末尾字符,实现一个退格的操作,当做除法操作时,我们需要判断除数是否等于0。排除程序bug的过程也是一个锻炼思维的过程,亲们可以下载本文中提供的实例亲自动手完善一下哦~