作者 by admin / 2022-09-10 / 暂无评论 / 3445 个足迹
题目
使用Android Studio写一个简易的计算器,只需要实现整数的基本运算即可。
界面上需要包含0-9和加减乘除,并有退格、清零功能。
所需知识:
Java:String的基本知识,数组(或者List)的运用
Android:绑定控件Button和TextView并使用,Button的按键监听,设置TextView的文本内容
实现计算器不同的功能,所编写的代码的难度也不同
较简单:实现两位数的加减乘除并输出结果
中等:计算一个计算式的加减乘除并保证先乘除后加减
较难:实现以上目标的同时,加入历史数据查看并添加错误判断,如果还想实现历史数据本地存储,请学习SharedPreferences
写完之后请将运行视频发到群里,需要你计算:
较简单:加减乘除案例各一个,如1+1、5-2、2*2、9/3
中等及较难:一次运算包含加减乘除中的其中三种运算,如55*22+66/22
解
题目本身不难,重点在于实现计算器的计算逻辑,如果只考虑整数的话很简单。我使用的思路是将一整个计算式(字符串格式)转为数字和符号的List,如[55,*,22,+,66,/,22],遵循先乘除后加减,先遍历寻找乘号和除号,每次寻找到便抽取该符号的前后数字进行相应计算,计算后将结果写至该符号前数字,删去符号和符号后数字。随后再遍历加号和减号,步骤同上。直到List长度为1时输出结果。
如计算1+2*3,List变化:[1,+,2,*,3] (计算2*3) -> [1,+,6,*,3] (写结果) -> [1,+,6] (删除) -> [7,+,6] (计算1+6) -> [7] (删除,至此可以输出结果)
我的核心计算函数:
如果要加入小数计算,这个逻辑会复杂一点,在计算时可以使用kahan求和算法、小数转整数解决、调用BigDecimal函数、自定义字符串计算函数等等来解决,当然求懒可以加一倍精度,改用decimal。
最后附上我写的安卓工程,包含详细注释。
Calculators.zip
PS:该工程中没有做被除数是0的错误判断,懒得改。
评论已关闭