android简易智能容错计算器

简介: 特点是:在按“=”之前智能预算结果显示,点击按钮,按钮颜色变化思路是:将输入的中缀表达式转换成后缀表达式进行计算难点是:带负数的四则混合运算,以及智能预算显示(这一部分容易出问题)当然最后要记得负0的处理还是为0,除以0提示...

看了一些网上的代码,感觉多少有点问题,有的不能计算浮点数,有的不能计算多位数,或者没办法保证乘除法在加减法的前面,或者不能与负数进行混合运算。


我实现的如下:

特点是:在按“=”之前智能预算结果显示,点击按钮,按钮颜色变化

思路是:将输入的中缀表达式转换成后缀表达式进行计算

难点是:带负数的四则混合运算,以及智能预算显示(这一部分容易出问题)

当然最后要记得负0的处理还是为0,除以0提示不能除以0


源码地址:GitHub - liuchenyang0515/Simple_Intelligent_fault---tolerant_calculator: 简易智能容错计算器


如演示图不能正常播放,请刷新网页

简易智能容错计算器示意图(模拟我的华为手机界面和效果):


image.gif



image.gif



image.gif


image.gif


这里将中缀表达式转换为后缀表达式然后计算出结果的java代码贴出来,android代码见上面地址:


importjava.text.DecimalFormat;
importjava.util.LinkedList;
importjava.util.Queue;
importjava.util.Scanner;
importjava.util.Stack;
publicclassTest {
privatestaticStringBuilderstr;
publicstaticvoidmain(String[] args) {
Scannercin=newScanner(System.in);
Strings=cin.next();
cin.close();
str=newStringBuilder(s);
DecimalFormatdf=newDecimalFormat("###.##############");
Stringnum=null;
try {
doubled=calculate();
if (Double.isNaN(d) ||Double.isInfinite(d)) {
System.out.println("不能除以0");
            } else {
num=df.format(d);
            }
        } catch (Exceptione) {
System.out.println("错误!");
        }
System.out.println("-0".equals(num) ?"0" : num);
    }
privatestaticdoublecalculate() {
Queue<String>q=getPostfixExpression(); // 中缀表达式转为后缀表达式returncalculatePostfixExpression(q);
    }
privatestaticdoublecalculatePostfixExpression(Queue<String>queue) {
Stack<Double>stack=newStack<>();
intlen=queue.size();
doublenum1=0.0, num2=0.0, num3=0.0;
for (inti=0; i<len; ++i) {
Strings=queue.poll();
if (!isOperator(s)) {
stack.push(Double.valueOf(s));
            } else {
num2=stack.pop();
num1=stack.pop();
switch (s) {
case"+":
num3=num1+num2;
break;
case"-":
num3=num1-num2;
break;
case"*":
num3=num1*num2;
break;
case"/":
num3=num1/num2;
break;
                }
stack.push(num3);
            }
        }
returnstack.peek();
    }
// 获得后缀表达式publicstaticQueue<String>getPostfixExpression() {
Stack<Character>stack=newStack<>();
intlen=str.length();
StringBuilderstrNum=newStringBuilder();
Queue<String>queue=newLinkedList<>();
chartemp=' ';
for (inti=0; i<len; ++i) {
temp=str.charAt(i);
if (temp>='0'&&temp<='9'||temp=='.') {
strNum.append(temp);
            } else {
if (i==0||isOperator(str.charAt(i-1) +"")) {
// 考虑负数的情况,比如乘以除以负数strNum.append(temp);
continue;
                }
queue.add(strNum.toString()); // 数字进队列strNum.setLength(0);
if (stack.isEmpty()) {
stack.push(temp);
                } else {
while (!stack.isEmpty()) {
chartop=stack.peek();
if (getPriority(top) >=getPriority(temp)) {
queue.add(top+"");
stack.pop();
                        } else {
break;
                        }
                    }
stack.push(temp);
                }
            }
        }
queue.add(strNum.toString()); // 数字进队列if (stack.isEmpty()) {
stack.push(temp);
        } else {
while (!stack.isEmpty()) {
chartop=stack.peek();
queue.add(top+"");
stack.pop();
            }
        }
returnqueue;
    }
privatestaticbooleanisOperator(Strings) {
returns.equals("+") ||s.equals("-") ||s.equals("*") ||s.equals("/");
    }
privatestaticintgetPriority(chartop) {
if (top=='+'||top=='-')
return1;
return2; // 只有加减乘除    }
}

image.gif

运行结果示例:

image.gif


image.gif


image.gif


image.gif


image.gif


image.gif


image.gif


image.gif


image.gif



image.gif


========================Talk is cheap, show me the code========================

目录
打赏
0
0
0
0
128
分享
相关文章
Android--智能下拉刷新框架(SmartRefreshLayout)
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79369430 SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。
3585 0
探索未来:安卓与iOS在智能穿戴设备领域的较量
随着科技的飞速发展,智能穿戴设备已逐渐成为我们日常生活的一部分。从健康监测到通讯交流,它们正以惊人的速度改变着我们的生活方式。本文将深入探讨安卓和iOS这两大操作系统在智能穿戴领域的现状、竞争以及未来发展趋势,揭示它们如何通过创新技术满足用户需求,并预测未来可能的发展方向。
63 0
构建未来:基于Android的智能物联网家居控制系统
【5月更文挑战第28天】 随着物联网(IoT)技术的不断演进,智能家居系统正变得越来越普遍。本文深入探讨了利用Android平台构建一个高效、可扩展的智能物联网家居控制系统。我们将分析系统架构、关键技术组件以及开发中的最佳实践,旨在为开发者提供一个清晰的指南,以实现设备之间的无缝通信和自动化控制。
构建未来:基于Android的智能物联网家居系统
【5月更文挑战第15天】 在快速发展的数字化时代,智能物联网(IoT)技术与移动操作系统的结合正在塑造未来家居的生活方式。特别是Android平台,以其开放性、灵活性和广泛的用户基础,成为智能家居创新的理想选择。本文将探讨如何利用Android系统构建一个高效、安全且易于扩展的智能家居控制系统,涵盖系统设计、关键技术实现以及可能面临的挑战。通过分析具体案例,我们旨在为开发者和企业提供一套可行的解决方案蓝图,以促进智能家居领域的进一步发展。
技术心得:打造自己的智能投屏体验——Android投屏开发入门
技术心得:打造自己的智能投屏体验——Android投屏开发入门
439 0
探索Gemini Pro AI在智能Android应用中的魅力
探索Gemini Pro AI在智能Android应用中的魅力
65 0
对于Android的http请求的容错管理
对于Android的http请求的容错管理
48 1
构建未来:基于Android的智能物联网家居系统
【4月更文挑战第24天】 随着物联网技术的飞速发展,智能家居系统作为其重要分支之一,正逐渐渗透到千家万户。本文将详细探讨如何利用Android平台的灵活性和开放性,设计并实现一个高效、可靠的智能物联网家居系统。我们将从系统的架构设计出发,深入分析关键技术点,包括设备通信协议、用户界面设计以及后台数据处理等方面,并展示通过Android设备进行实时控制和监控的实用性。文章不仅聚焦于技术细节,还将对未来发展趋势及潜在挑战进行前瞻性讨论。
128 0
【Android App】物联网实战项目之自动驾驶的智能小车(附源码和演示 超详细)
【Android App】物联网实战项目之自动驾驶的智能小车(附源码和演示 超详细)
418 1

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
    133
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    31
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    4
  • 4
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    11
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    43
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    10
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    18
  • 8
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    30
  • 9
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    3
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    12
  • 1
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    12
  • 2
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    29
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    41
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    30
  • 5
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    43
  • 6
    Android历史版本与APK文件结构
    134
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    36
  • 8
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    30
  • 9
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    61
  • 10
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    40