IOS OC 计算器算法(不考虑优先级)
个人见解:为还在计算器算法方面迷惑的同学一个数据处理解决方案:定义一个可变数组array,一个可变字符串str,使字符通过[array addObject:str];方法添加到可变数组,每当触发运算符的按键时,利用[array addObject:[[NSMutableString alloc]initWithCapacity:0]];再次为可变数组添加一个字符串,我们获取按键的值通过 [[array lastObject] appendString:myBut.titleLabel.text];方法添加到数组最后一个元素(可变字符串)中,最终可变数组里的每个字符串,除了第一个字符串外,每一个字符串的内容为(字符串首位是运算符,后边全是数字、小数点等),运算符也就是每个字符串的标志,标志着它与何种方式参与运算 下面上段按下等号时的代码if([myBut.titleLabel.text isEqualToString:@"="])
{
float sum=[str floatValue];
for(id obj in array)
{
if([obj hasPrefix:@"+"] == YES)//字符串开头字符
{
[obj deleteCharactersInRange:NSMakeRange(0, 1)];
sum = sum + [obj floatValue];
}
else if([obj hasPrefix:@"-"] == YES)//字符串开头字符
{
[obj deleteCharactersInRange:NSMakeRange(0, 1)];
sum = sum - [obj floatValue];
}
else if([obj hasPrefix:@"*"] == YES)//字符串开头字符
{
[obj deleteCharactersInRange:NSMakeRange(0, 1)];
sum = sum * [obj floatValue];
}
else if([obj hasPrefix:@"/"] == YES)//字符串开头字符
{
[obj deleteCharactersInRange:NSMakeRange(0, 1)];
sum = sum / [obj floatValue];
}
}
NSString *str1 = [NSString stringWithFormat:@"%f",sum];
[array removeAllObjects];
str = [@"" mutableCopy];
[array addObject:str];
myLable.text = str1;
}在这里用到了解决《触屏手写软件》(例如:涂鸦)的思想,如有雷同纯属巧合,刘冠2015.11.11
IOS OC 计算器算法(不考虑优先级)的更多相关文章
- iOS 收款计算器算法
一个收款计算器算法,从之前高仿有赞Demo里面抽离的一个界面 demo 在这里 https://github.com/L-vinCent/calculView_function 显示计算记录 不能连续 ...
- ios+oc面试题
ios+oc面试题 浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...
- Python开发——利用正则表达式实现计算器算法
Python开发--利用正则表达式实现计算器算法 (1)不使用eval()等系统自带的计算方法 (2)实现四则混合运算.括号优先级解析 思路: 1.字符串预处理,将所有空格去除 2.判断是否存在括号运 ...
- IOS之计算器实现
本文利用ios实现计算器app,后期将用mvc结构重构 import UIKit class CalculViewController: UIViewController { @IBOutlet we ...
- iOS - OC 面向对象语法
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...
- iOS OC语言原生开发的IM模块--RChat
iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...
- iOS - OC RunTime 运行时
1.运行时的使用 向分类中添加属性 // 包含运行时头文件 #import <objc/runtime.h> /* void objc_setAssociatedObject(id obj ...
- iOS - OC Category 分类
1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...
- iOS - OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...
随机推荐
- spring+mybaties+springMvc+slf4j所需jar包
- shell正则表达式(zhuan)
匹配中文字符的正则表达式:[u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个 ...
- Keepalived+Redis高可用部署
1 Redis简介及安装 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数 ...
- C#开发命名规范
学习C#之初,始终不知道怎么命名比较好,很多时候无从命名,终于有一天我整理了一份命名规范文档,自此我就是按照这个命名规范书写代码,整洁度无可言表,拙劣之处请大家斧正,愚某虚心接受,如有雷同,不胜荣幸 ...
- if..elif语句
根据用户输入内容打印其权限 # alex --> 超级管理员 # eric --> 普通管理员 # tony,rain --> 业务主管 # 其他 --> 普通用户 name ...
- 如何在iOS地图上高效的显示大量数据
2016-01-13 / 23:02:13 刚才在微信上看到这篇由cocoachina翻译小组成员翻译的文章,觉得还是挺值得参考的,因此转载至此,原文请移步:http://robots.thought ...
- 在Eclipse中生成接口的JUnit测试类
在Spring相关应用中,我们经常使用“接口” + “实现类” 的形式,为了方便,使用Eclipse自动生成Junit测试类. 1. 类名-new-Other-java-Junit-Junit Tes ...
- nginx 编译参数详解(运维不得不看)
nginx参数: --prefix= 指向安装目录 --sbin-path 指向(执行)程序文件(nginx) --conf-path= 指向配置文件(nginx.conf) --error-log- ...
- [转]response.getWriter().write()与out.print()的区别
原文地址:http://blog.csdn.net/javaloveiphone/article/details/8133772 1.首先介绍write()和print()方法的区别: (1).w ...
- 【URAL 1486】Equal Squares
题意:求给定字符矩阵中相同正方形矩阵的最大边长和这两个相同正方形的位置 第一次写字符串哈希,选两个不同的模数进行二维字符串哈希. 本来应该取模判断相等后再暴力扫矩阵来判断,但是我看到<Hash在 ...