unity实现一个简易的科学计算器

用UGUI先做一个大概的样式

类似这样的,父子关系是这样的

新建一个CalculateTool脚本,定义上述的按钮变量

定义两个字符串用于显示和分析,定义一个操作符号和优先级的列表

在Awake方法里面赋值:

给这些按钮添加事件:

给运算符号的列表添加值,后面的数代表优先级

点击数字等按钮时候需要将点击的信息添加到显示和分析的字符串中,其中计算平方和立方的字符用 '[' 和 ']'这两个字符表示,显示则用输入法里的符号显示。

接下来就是按下等号的时候需要计算: 先判断如果是空的话不计算,如果括号不匹配的话不计算。

然后利用List这个现成的特别好用的类实现数字和操作符的分析,定义三个列表,缓冲的字符串用来判断如果是有好几位数字,小数,或者操作符是有很多个字符比如sin这种。

接下来分析字符串,将数字和操作符一个个都单独分开,按照输入的顺序添加到所有的列表中

对于操作符号,会出现sin这种正确的符号,也会有 *( 或者 )+ 这种两个符号,需要判断下区分开,括号要单独分出来,同样的乘方,三次方也要单独分出来。最后将等号加进去。

将这些字符串都分开后,就是一步步的计算了:如果是数字就数字加入到数字列表中,没啥操作。

如果这时不是数字就要比较优先级了,当前优先级大就将符号直接加到操作符的列表中,然后下一个。如果优先级小,进行计算,然后将数字删除,操作符删除,然后在当前进行下一轮判断,直到判断到当前符号为优先级大的符号或者列表里不再存在操作符了,结束判断。

循环,如果优先级大,加到列表

如果优先级小,计算,将计算的数字符号删除,将计算结果添加到数字列表

同理在switch中可以写出其他操作符号的计算方式,比较特殊的是平方立方sin等,他们是对一个数进行操作的

唯一不同的就是括号:

如果是左括号接跳出一次这个循环。

额外写个判断是否是数字的方法:

这样基本上一个科学计算器的大概就出现了,其中输入的方法和计算还有待后续的改进和添加

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值