DIY制作计算器——训练程序思维

news/2024/11/16 13:53:10/文章来源:https://www.cnblogs.com/SHa-Jazy/p/18352185

自己做的计算器

主要的逻辑如下:
用两个集合,每个数字对应一个符号,先收集数字和符号,然后再处理乘除法,再处理加减法,最后得出计算的数字;(此方法不一定是最优方法,因为没有收集网络上的资料,是自己想出来的解决方案)

 按钮 “=” 的逻辑如下:

 var val = show.Text;var vals = val.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);//案例: 1 + 2 * 3 / 4 - 5;//分析后如下://数字:  1 2 3 4 5//        | | | |//符号:  + * / -List<decimal> figure = new List<decimal>();//数字List<string> flag = new List<string>();//符号for (int i = 0; i < vals.Length; i = i + 2){if (i  == vals.Length - 1)//是最后一个数字{break;}figure.Add(decimal.Parse(vals[i]));flag.Add(vals[i + 1]);}figure.Add(decimal.Parse(vals[vals.Length - 1]));//最后一个数字//处理乘法 和 除法for (int i = 0; i <= figure.Count-1 -1; i++){var flag_temp = flag[i];if (flag_temp == "x"){figure[i] = figure[i] * figure[i + 1];if ( (i + 1) != figure.Count- 1)//不是最后一个数字{                        flag.RemoveAt(i);}figure.RemoveAt(i + 1);i--;continue;}if (flag_temp == "/"){figure[i] = figure[i] / figure[i + 1];                    if ((i + 1) != figure.Count - 1)//不是最后一个数字{   flag.RemoveAt(i);}figure.RemoveAt(i + 1);i--;continue;}}decimal all = figure[0];for (int i = 0; i <= figure.Count -2 ; i++){//all = all figure[i];if (flag[i] == "+"){all = all + figure[i+ 1];}else{all = all - figure[i+1];}}show.Text = show.Text + "\r\n" + "="  + "\r\n" + all.ToString();IsCalculate = true;

  

源码分享:

通过百度网盘分享的文件:计算器

链接:https://pan.baidu.com/s/1-xqbopR21srQG4SakHZnYQ 

提取码:sfqf

 

 

制作不易,欢迎点赞分享加关注,欢迎赞赏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/780817.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 CF896C Willem, Chtholly and Seniorious之珂朵莉树板子

洛谷CF896C题解传送锚点摸鱼环节 Willem, Chtholly and Seniorious 题面翻译 【题面】 请你写一种奇怪的数据结构,支持:\(1\) \(l\) \(r\) \(x\) :将\([l,r]\) 区间所有数加上\(x\) \(2\) \(l\) \(r\) \(x\) :将\([l,r]\) 区间所有数改成\(x\) \(3\) \(l\) \(r\) …

制作计算器——训练程序思维

自己做的计算器主要的逻辑如下:用两个集合,每个数字对应一个符号,先收集数字和符号,然后再处理乘除法,再处理加减法,最后得出计算的数字;(此方法不一定是最优方法,因为没有收集网络上的资料,是自己想出来的解决方案)按钮 “=” 的逻辑如下:var val = show.Text;var…

全新在线客服系统源码(pc+h5+uniapp+公众号小程序+抖音)附搭建接入教程

全新在线客服系统源码介绍 一、系统概述与优势 本系统是一款基于PHP的开源在线客服系统,支持PC端、移动端(小程序)、H5页面以及Uniapp多端接入。系统利用网络技术和人工智能技术,实现用户与客服人员的即时聊天沟通,有效提升服务质量和用户满意度。系统优势包括提高服务效率…

抖音私信客服系统 - 对接抖音私信统一接待回复 -以及私信或评论自动回复

在数字化时代,企业面临着前所未有的挑战与机遇。社交媒体的快速发展,尤其是小红书和抖音这样的平台,为企业提供了与消费者沟通和营销的新渠道。本文将探讨全渠道私信客服系统在企业转型中的重要性和独特价值。 一、小红书与抖音的崛起小红书以其精准的内容分享和消费推荐功能…

GitLab 之 Git LFS 大文件存储的配置

参考 https://cloud.tencent.com/developer/article/1010589LFS介绍 Git 大文件存储(Large File Storage,简称LFS)目的是更好地把大型二进制文件,比如音频文件、数据集、图像和视频等集成到 Git 的工作流中。我们知道,Git 存储二进制效率不高,因为它会压缩并存储二进制文…

lg-dp3

lg-dp3 计数的东西有什么特点、转化/好的刻画方式 A Farthest City题面关键信息:权值为1的最短路 --- bfs --- 分层那么显然加一个点他只能与上一层连,和一层内部连。则设 \(f_{i,j}\) 为 [点数,最后一层点数] 有 \[f_{i,j}=2^{j\choose 2}\sum_{k=1}^{i-j}{f_{i-j,k}(2^k-1…

FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流

​SRT Streamer是一个安卓手机端的开源SRT协议直播推流框架,可用于RTMP直播和SRT直播。SRT Streamer支持的视频编码包括H264、H265等等,支持的音频编码包括AAC、OPUS等等,可谓功能强大的APP直播框架。相比之下,另一款APP直播框架RTMP Streamer支持RTMP直播和RTSP直播,不支…

mongo变更流使用及windows下副本集五分钟搭建

mongodb的变更流解释: 变更流(Change Streams)允许应用程序访问实时数据变更,从而避免事先手动追踪 oplog 的复杂性和风险。应用程序可使用变更流来订阅针对单个集合、数据库或整个部署的所有数据变更,并立即对它们做出响应。由于变更流采用聚合框架,因此,应用程序还可对…

ConcurrentHashMap的原理

背景 我们知道hashmap是一个线程不安全的数据结构,在多线程编程的时候,多个线程同时向hashmap中put元素的时候,会发生数据丢失。多线程put操作后,再get操作导致死循环。 多线程put非NULL元素后,get操作得到NULL值。 使用 为了保证并发安全,我们使用hashmap的时候,建议是…

ABC201E Xor Distances 题解

从洛谷搬过来的题解,因为感觉和上一把 ABC的E有点像呐ABC201E Xor Distances 题解 题目大意 给定一个带权树,求树上每两点的简单路径上的边权的异或和的和。 形式化的,定义 \(dis(i,j)\) 为 \(i\) 到 \(j\) 的简单路径上的边权的异或和,求 \(\large\sum\limits_{i=1}^n\sum…

学生Java学习路程-6

ok,到了一周一次的总结时刻,我大致会有下面几个方面的论述:1.这周学习了Java的那些东西2.这周遇到了什么苦难3.未来是否需要改进方法等几个方面阐述我的学习路程。 复习面向对象数组 数组的三种初始化方法:默认,静态,动态引用类型Man放入数组中的测试代码数组的拷贝 使用…