零基础安卓开发:开发简易计算器(三)——算法与按钮绑定功能

本文介绍了如何在安卓应用中开发一个简单的计算器,包括算法的实现和按钮事件绑定。算法采用递归思想处理计算表达式,优先处理括号内的计算。按钮功能通过实现View.OnClick监听器并绑定到类对象实现。文章提供了关键代码示例,但建议读者查阅官方文档以了解更多细节和完整实现。
摘要由CSDN通过智能技术生成

算法实现

关于算法实现我简要介绍一下,主要是利用递归的思想。
例如这个式子: “1+56/72-4”
假设计算函数为 public static double calculate( String str){}
我们先从这个字符串内寻找计算符号 例如加号
如果 找到了加号
则返回结果 calculate(“1”)+calculate(“56/72-4”)
递归终止条件为字符串内部没有符号,例如上式的 calculate(“1”)就返回 1.0
依次类推,值得注意的是减法和除法不满足结合律,需要从后往前查找符号。
优先级越高的运算应该放到越后面查找。
关于括号的实现():
优先计算括号内内容,查找最里面的括号,并计算该括号内算式的值,直到消除所有括号,把整个带括号的字符串变为不带括号的字符串为止

括号实现:

int startIndex = content.lastIndexOf("(");
        // 如果不是-1,标识这个等式中有括号,继续找与之对应的右括号
        if (startIndex != -1) {
            // 从左括号的位置开始找,找到第一个右括号,这对括号里面一定没有括号,所以就可以交给写好的parse(Stringcontent)方法算出结果!
            int endIndex = content.indexOf(")", startIndex);
            double d = parse(content.substring(startIndex + 1, endIndex));
            return parse(content.substring(0, startIndex) //
                    + d + content.substring(endIndex + 1));

总的计算函数实现:

 public static double parse(String content) {

        // 找到字符串中最后一个左括号
        int startIndex = content.lastIndexOf("(");
        // 如果不是-1,标识这个等式中有括号,继续找与之对应的右括号
        if (startIndex != -1) {
            // 从左括号的位置开始找,找到第一个右括号,这对括号里面一定没有括号,所以就可以交给写好的parse(Stringcontent)方法算出结果!
            int endIndex = content.indexOf(")", startIndex);
            double d = parse(content.substring(startIndex + 1, endIndex));
            return parse(content.substring(0, startIndex) //
                    + d + content.substring(endIndex + 1));
        }

        int index = content.indexOf("+");
        if (index != -1) {
            return parse(content.substring(0, index)) + parse(content.substring(index + 1));
        }
        // 这里<---
        index = content.lastIndexOf("-");
        if (index != -1&&index !=0&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值