这个计算器主要是使用数组进行实现的.虽然没有使用前缀后缀表达式,但是是一种方法o.

.h文件

[objc] view plaincopyprint?
  1. //
  2. //  LCViewController.h
  3. //  具有优先级的calculator
  4. //
  5. //  Created by lichan on 13-12-4.
  6. //  Copyright (c) 2013年 com.lichan. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. @interface LCViewController : UIViewController
  10. @property (retain, nonatomic) IBOutlet UITextField *textField;
  11. @property (retain, nonatomic) IBOutlet UITextField *longTextField;
  12. @property (strong,nonatomic)NSMutableArray *numbersArray;
  13. @property (strong,nonatomic)NSMutableArray *operateArray;
  14. @property (copy,nonatomic)NSString *numberTempString;
  15. - (IBAction)longTextField:(id)sender;
  16. - (IBAction)numberPressed:(id)sender;
  17. - (IBAction)clearScreen:(id)sender;
  18. - (IBAction)operatePressed:(UIButton *)sender;
  19. - (IBAction)equalOperate:(id)sender;
  20. @end
//
//  LCViewController.h
//  具有优先级的calculator
//
//  Created by lichan on 13-12-4.
//  Copyright (c) 2013年 com.lichan. All rights reserved.
//#import <UIKit/UIKit.h>@interface LCViewController : UIViewController
@property (retain, nonatomic) IBOutlet UITextField *textField;
@property (retain, nonatomic) IBOutlet UITextField *longTextField;@property (strong,nonatomic)NSMutableArray *numbersArray;@property (strong,nonatomic)NSMutableArray *operateArray;@property (copy,nonatomic)NSString *numberTempString;- (IBAction)longTextField:(id)sender;- (IBAction)numberPressed:(id)sender;
- (IBAction)clearScreen:(id)sender;- (IBAction)operatePressed:(UIButton *)sender;
- (IBAction)equalOperate:(id)sender;
@end

.m文件

[objc] view plaincopyprint?
  1. //
  2. //  LCViewController.m
  3. //  具有优先级的calculator
  4. //
  5. //  Created by lichan on 13-12-4.
  6. //  Copyright (c) 2013年 com.lichan. All rights reserved.
  7. //
  8. #import "LCViewController.h"
  9. @interface LCViewController ()
  10. @end
  11. @implementation LCViewController
  12. - (void)viewDidLoad
  13. {
  14. [super viewDidLoad];
  15. _numberTempString = [[NSMutableString alloc]init];
  16. _numbersArray = [[NSMutableArray alloc]init];
  17. _operateArray = [[NSMutableArray alloc]init];
  18. // Do any additional setup after loading the view, typically from a nib.
  19. }
  20. -(void)dealloc
  21. {
  22. [_numberTempString release];
  23. [_textField release];
  24. [_numbersArray release];
  25. [_operateArray release];
  26. [_longTextField release];
  27. [super dealloc];
  28. }
  29. - (void)didReceiveMemoryWarning
  30. {
  31. [super didReceiveMemoryWarning];
  32. // Dispose of any resources that can be recreated.
  33. }
  34. - (IBAction)numberPressed:(id)sender {
  35. UIButton *tempButton = (UIButton *)sender;
  36. NSString *tempNumber = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示
  37. [_textField setText:[NSString stringWithFormat:@"%@%@",_textField.text,tempNumber]];  //textfield 上字符串的连接,以便于形成字符串
  38. [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,tempNumber]];
  39. _numberTempString = _textField.text;
  40. }
  41. - (IBAction)clearScreen:(id)sender {
  42. [_numbersArray removeAllObjects];
  43. [_operateArray removeAllObjects];
  44. _numberTempString = nil;
  45. [_textField setText:@""];
  46. [_longTextField setText:@""];
  47. }
  48. - (IBAction)operatePressed:(UIButton *)sender {
  49. UIButton *tempButton = (UIButton *)sender;
  50. NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示
  51. [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]];
  52. if (_textField.text != nil) {
  53. [_numbersArray addObject:_numberTempString];
  54. NSLog(@"---_numbersArray%@",_numbersArray);
  55. [_textField setText:@""];
  56. [_operateArray addObject:sender.currentTitle];
  57. NSLog(@"_operateArray %@",_operateArray);
  58. }
  59. else if (_textField.text == nil)
  60. {
  61. [_operateArray removeLastObject];
  62. [_operateArray addObject:sender.currentTitle];
  63. NSLog(@"_operateArray %@",_operateArray);
  64. }
  65. }
  66. - (IBAction)equalOperate:(id)sender {
  67. UIButton *tempButton = (UIButton *)sender;
  68. NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示
  69. [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]];
  70. if (_textField.text != nil) {
  71. [_numbersArray addObject:_numberTempString];
  72. NSLog(@"---_numbersArray%@",_numbersArray);
  73. }
  74. //----------------
  75. NSString *result = [[NSString alloc]init];
  76. while (_numbersArray.count >= 3 )
  77. {
  78. NSString *firstOperate = [_operateArray objectAtIndex:0];
  79. NSString *sencondOperate = [_operateArray objectAtIndex:1];
  80. NSString *firstNumber = [_numbersArray objectAtIndex:0];
  81. NSString *sencondNumber = [_numbersArray objectAtIndex:1];
  82. NSString *thirdNumber = [_numbersArray objectAtIndex:2];
  83. if ([firstOperate isEqualToString:@"+"] ||[firstOperate isEqualToString:@"-"])
  84. {
  85. if ([sencondOperate isEqualToString:@"*"] ||[sencondOperate isEqualToString:@"/"])
  86. {
  87. if ([sencondOperate isEqualToString:@"*"]) {
  88. result = [self multiOperatorSymbolByOne:sencondNumber Two:thirdNumber];
  89. }
  90. if ([sencondOperate isEqualToString:@"/"]) {
  91. result = [self divOperatorSymbolByOne:sencondNumber Two:thirdNumber];
  92. }
  93. [_operateArray removeObjectAtIndex:1];
  94. [_numbersArray removeObjectAtIndex:2];
  95. [_numbersArray replaceObjectAtIndex:1 withObject:result];
  96. NSLog(@"num:%@",_numbersArray);
  97. }
  98. else
  99. {
  100. NSString *result = [[NSString alloc]init];
  101. if ([firstOperate isEqualToString:@"+"]) {
  102. result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber];
  103. }
  104. if ([firstOperate isEqualToString:@"-"]) {
  105. result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber];
  106. }
  107. [_operateArray removeObjectAtIndex:0];
  108. [_numbersArray replaceObjectAtIndex:0 withObject:result];
  109. [_numbersArray removeObjectAtIndex:1];
  110. NSLog(@"%@",_numbersArray);
  111. }
  112. }
  113. else
  114. {
  115. NSString *firstOperate = [_operateArray objectAtIndex:0];
  116. NSString *firstNumber = [_numbersArray objectAtIndex:0];
  117. NSString *sencondNumber = [_numbersArray objectAtIndex:1];
  118. if ([firstOperate isEqualToString:@"*"]) {
  119. result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber];
  120. }
  121. if ([firstOperate isEqualToString:@"/"]) {
  122. result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber];
  123. }
  124. [_operateArray removeObjectAtIndex:0];
  125. [_numbersArray removeObjectAtIndex:1];
  126. [_numbersArray replaceObjectAtIndex:0 withObject:result];
  127. NSLog(@"%@",_numbersArray);
  128. }
  129. }
  130. NSString *firstOperate = [_operateArray objectAtIndex:0];
  131. NSString *firstNumber = [_numbersArray objectAtIndex:0];
  132. NSString *sencondNumber = [_numbersArray objectAtIndex:1];
  133. NSLog(@"%@",_numbersArray);
  134. if ([firstOperate isEqualToString:@"*"]) {
  135. result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber];
  136. }
  137. if ([firstOperate isEqualToString:@"/"]) {
  138. result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber];
  139. }
  140. if ([firstOperate isEqualToString:@"+"]) {
  141. result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber];
  142. }
  143. if ([firstOperate isEqualToString:@"-"]) {
  144. result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber];
  145. }
  146. NSLog(@"result : %@",result);
  147. [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,result]];
  148. }
  149. #pragma mark 操作符号 method
  150. - (NSString *)plusOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
  151. {
  152. float num1 = [str1 floatValue];
  153. float num2 = [str2 floatValue];
  154. float resultNum = num1 + num2;
  155. return [NSString stringWithFormat:@"%f",resultNum];
  156. }
  157. - (NSString *)subOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
  158. {
  159. float num1 = [str1 floatValue];
  160. float num2 = [str2 floatValue];
  161. float resultNum = num1 - num2;
  162. return [NSString stringWithFormat:@"%f",resultNum];
  163. }
  164. - (NSString *)multiOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
  165. {
  166. float num1 = [str1 floatValue];
  167. float num2 = [str2 floatValue];
  168. float resultNum = num1 * num2;
  169. return [NSString stringWithFormat:@"%f",resultNum];
  170. }
  171. - (NSString *)divOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
  172. {
  173. float num1 = [str1 floatValue];
  174. float num2 = [str2 floatValue];
  175. float resultNum = num1 / num2;
  176. return [NSString stringWithFormat:@"%f",resultNum];
  177. }
  178. @end

IOS calculater相关推荐

  1. Xcode couldn‘t find any iOS App Development provisioning profiles matching ‘com.example.***‘

    在更新完iOS14.3后,Xcode真机调试时报错,无法进行真机测试: 报以下错误: No profiles for 'com.example.software.Login' were found: ...

  2. iOS视频硬编码技术

    iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...

  3. iphone smtp服务器没有响应,电子邮件卡在iPhone或iPad上的发件箱?如何修复iOS中的未发送邮件 | MOS86...

    您曾经在iOS中发送电子邮件,只能将信息卡在iPhone,iPad或iPod touch的邮件应用发件箱中?你知道这是什么时候发生的,因为在iOS的Mail应用程序的底部,状态栏在iOS中显示1个未发 ...

  4. layer弹窗在IOS上,被软键盘挤到上边的解决方法

    就像这种情况,经过多番请教跟尝试,找到一个能解决这个问题的方法,但可能有点笨重.就是在当前弹框里,设置offset的值,里边的值可以随意写,然后再下边给弹框追加一个样式即可. <!DOCTYPE ...

  5. iOS开发8:使用Tool Bar切换视图

    之前讨论的都是单视图应用程序,而在实际应用中,我们可能要多个视图,并根据用户的需要切换视图. iOS中几种典型的多视图程序: (1)Tab Bar Application:程序的底部有一排按钮,轻触其 ...

  6. 25个增强iOS应用程序性能的提示和技巧 — 中级篇

    本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...

  7. iOS Webview打开不受信的URL

    在我们开发过程中经常会碰到直接访问开发人员的私有地址, 这样在app 上是无法打开指定的网页的. 在iOS中需要对WKWebView 进行如下设置: 1.在工程的Plist 文件中添加一下选项 App ...

  8. iOS蓝牙开发---CoreBluetooth[BLE 4.0] 初级篇[内附Demo地址]

    一.蓝牙基础知识 (一)常见简称 1.MFI  make for ipad ,iphone, itouch 专们为苹果设备制作的设备,开发使用ExternalAccessory 框架(认证流程貌似挺复 ...

  9. iOS 开发经验总结

    iOS 开发经验总结http://www.cocoachina.com/ios/20170216/18699.html 1.cocoa pods 常用的framework 1 2 3 4 5 6 7 ...

  10. iOS开发-xcdatamodeld文件 CoreData的介绍和使用,sqlite的使用

    CoreData的介绍和使用  源引:http://www.jianshu.com/p/d027090af00e CoreData是数据存储的一种方式,CoreData实质也是对SQLite的封装. ...

最新文章

  1. [转]如果我有jQuery背景,我应该如何切换到AngularJS的思维模式?
  2. 精通python要多久-精通python 或者R语言大约需要多长时间?怎样算精通?
  3. 1054 求平均值(PAT乙级 C++)
  4. IT历史:IT史重大失败教训
  5. ECMAScript 的发展历史
  6. 获取input file绝对路径_IO--File对象
  7. 基本功:超全面 IO 流教程,小白也能看懂
  8. 人与自然蠓的故事-上好像以前播过!
  9. goldengate for mysql_GoldenGate for mysql to mysql:单向同步
  10. htm——position:static、absolute、relative详解
  11. 阿里巴巴举办全球数学竞赛 助力基础科学杰出人才培养
  12. 发光二极管pcb封装图画法_干货 | 从焊接角度谈画PCB图时应注意的问题
  13. vector扩容时以2倍或1.5倍扩容的原因
  14. 第2章 Linux内核模块
  15. OSChina 周日乱弹 —— 你今天又穿女装上班了
  16. 给大家推荐一个大大的萌妹子,算是我学计算机以来遇到的最喜欢的妹子吧!23333333
  17. 利用python实现汉字转拼音的2种方法
  18. 有趣的23000----整理(02)l词根
  19. Ubuntu16.04安装vscode,并修改为简体中文版,设置显示空格和tab,汉字或者汉字的标点带黄色框
  20. 纯代码开发c# ui_UI代码挑战#1-心跳

热门文章

  1. LINUX下截图快捷方式
  2. ZigBee2006 CC2430 按键流程
  3. 公众号再也不用为单独上传图片和排版发愁了
  4. 大数据Flink(八):Flink入门案例
  5. 后深度学习的挑战与思考(PRCV 焦李成 报告记录)
  6. linux触摸屏校准命令,FL2440下触摸屏校准
  7. 电脑桌面下栏和计算机里面全黑,电脑桌面下面菜单栏变黑条了,为什么?
  8. thinkphp5 excel导入导出
  9. 二极管与门,或门,三极管整合
  10. 编写Java程序,创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck)。