计算机功能实现问题

计算机功能实现问题

http://img1.sycdn.imooc.com//climg/5f169f0509d442ef11670634.jpg

如上图所示: 我重构了整个代码,实现了可以保存 计算过程和计算结果的计算器

现在有几个问题: 1.只能实现2位数操作,如果要多位数操作 思路是 要设置一个 数组保存每次输入的数据,同时保存 算术符号, 这里面问题就大了, 因为多位数操作涉及算术优先级,复杂程度太高了,请问老师们有这样的计算器例子吗??  (时间紧迫,急着看下一章,没空研究。。)

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你看看这个链接里面的实现,可以参考一下

https://www.cnblogs.com/imwtr/p/5970865.html


好帮手慕阿园 2020-07-22 10:44:01

同学你好,老师这里只是提供了一个大概的思路,同学可根据自己的想法进行优化

比如点击5 ,调用方法,判断点击的是数字还是运算符号,将 5 存入其他隐藏控件,再次输入+号的时候,再次调用方法,判断是运算符,就存到别的控件,每次输入一个字符他都去调用一次方法,当点击等号的时候 ,将得到的字符串转换成数学表达式,执行运算

祝学习愉快

  • 提问者 py_builder #1
    老师你想得也未免过于简单了, 请问加入我输入 2+3*4= 按你的思路得出来的是5*4=20,然而实际是2+12=14 用隐藏控件还不如直接用数组存储,问题的关键是在用户输入 等号前 得到了一串数学表达式 比如 9+8+7/6*5+3-2+1 这种情况下即使将9到1的数字都存储好了,依旧绕不开如何判断 算术优先级,然后重组表达式让程序能计算。
    2020-07-22 14:30:11
好帮手慕阿园 2020-07-21 16:25:36

同学你好,同学可以根据自己想法重构案例,很棒

现阶段同学理解简单的四则运算即可,关于连续加减乘除大概思路如下:

1、首先需要将点击的任意一个按钮(除了等号按钮外)的文本显示在input框中
2、在按下等号时将input框中的文本拿出来
3、将得到的字符串转换成数学表达式并进行计算
4、将计算结果反应在input框中

同学如果有兴趣可以参考这个思路再来实现一下

祝学习愉快


  • 提问者 py_builder #1
    突然廓然开朗,之前想复杂了,确实直接从数组或者文本字符串取出来判断一下符号数字,再转换成数学表达式就可以了。 但细想了一下,也不是这么简单的; 1. 我用的是textarea标签,自己写了一个多文本获取获取最后一行的方法,因为textarea好像没有这个函数(按下等号后才是新一次的计算,因为需要保存之前每一次的计算过程,即前面的内容不能删除) 2.(不采用数组储存,直接文本储存)取出最后一行的代码,然后又涉及文本分割,同时出现+-*/应该用什么函数去分割还原成数学表达式呢?又要自己重写分割函数吗?
    2020-07-21 21:09:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师