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

.h文件

//
//  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文件

//
//  LCViewController.m
//  具有优先级的calculator
//
//  Created by lichan on 13-12-4.
//  Copyright (c) 2013年 com.lichan. All rights reserved.
//#import "LCViewController.h"@interface LCViewController ()@end@implementation LCViewController- (void)viewDidLoad
{[super viewDidLoad];_numberTempString = [[NSMutableString alloc]init];_numbersArray = [[NSMutableArray alloc]init];_operateArray = [[NSMutableArray alloc]init];// Do any additional setup after loading the view, typically from a nib.
}-(void)dealloc
{[_numberTempString release];[_textField release];[_numbersArray release];[_operateArray release];[_longTextField release];[super dealloc];}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}- (IBAction)numberPressed:(id)sender {UIButton *tempButton = (UIButton *)sender;NSString *tempNumber = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示[_textField setText:[NSString stringWithFormat:@"%@%@",_textField.text,tempNumber]];  //textfield 上字符串的连接,以便于形成字符串[_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,tempNumber]];_numberTempString = _textField.text;}- (IBAction)clearScreen:(id)sender {[_numbersArray removeAllObjects];[_operateArray removeAllObjects];_numberTempString = nil;[_textField setText:@""];[_longTextField setText:@""];
}- (IBAction)operatePressed:(UIButton *)sender {UIButton *tempButton = (UIButton *)sender;NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示[_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]];if (_textField.text != nil) {[_numbersArray addObject:_numberTempString];NSLog(@"---_numbersArray%@",_numbersArray);[_textField setText:@""];[_operateArray addObject:sender.currentTitle];NSLog(@"_operateArray %@",_operateArray);}else if (_textField.text == nil){[_operateArray removeLastObject];[_operateArray addObject:sender.currentTitle];NSLog(@"_operateArray %@",_operateArray);}}- (IBAction)equalOperate:(id)sender {UIButton *tempButton = (UIButton *)sender;NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示[_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]];if (_textField.text != nil) {[_numbersArray addObject:_numberTempString];NSLog(@"---_numbersArray%@",_numbersArray);}//----------------
NSString *result = [[NSString alloc]init];while (_numbersArray.count >= 3 )
{NSString *firstOperate = [_operateArray objectAtIndex:0];NSString *sencondOperate = [_operateArray objectAtIndex:1];NSString *firstNumber = [_numbersArray objectAtIndex:0];NSString *sencondNumber = [_numbersArray objectAtIndex:1];NSString *thirdNumber = [_numbersArray objectAtIndex:2];if ([firstOperate isEqualToString:@"+"] ||[firstOperate isEqualToString:@"-"]){if ([sencondOperate isEqualToString:@"*"] ||[sencondOperate isEqualToString:@"/"]){if ([sencondOperate isEqualToString:@"*"]) {result = [self multiOperatorSymbolByOne:sencondNumber Two:thirdNumber];}if ([sencondOperate isEqualToString:@"/"]) {result = [self divOperatorSymbolByOne:sencondNumber Two:thirdNumber];}[_operateArray removeObjectAtIndex:1];[_numbersArray removeObjectAtIndex:2];[_numbersArray replaceObjectAtIndex:1 withObject:result];NSLog(@"num:%@",_numbersArray);}else{NSString *result = [[NSString alloc]init];if ([firstOperate isEqualToString:@"+"]) {result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber];}if ([firstOperate isEqualToString:@"-"]) {result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber];}[_operateArray removeObjectAtIndex:0];[_numbersArray replaceObjectAtIndex:0 withObject:result];[_numbersArray removeObjectAtIndex:1];NSLog(@"%@",_numbersArray);}}else{NSString *firstOperate = [_operateArray objectAtIndex:0];NSString *firstNumber = [_numbersArray objectAtIndex:0];NSString *sencondNumber = [_numbersArray objectAtIndex:1];if ([firstOperate isEqualToString:@"*"]) {result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber];}if ([firstOperate isEqualToString:@"/"]) {result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber];}[_operateArray removeObjectAtIndex:0];[_numbersArray removeObjectAtIndex:1];[_numbersArray replaceObjectAtIndex:0 withObject:result];NSLog(@"%@",_numbersArray);}}NSString *firstOperate = [_operateArray objectAtIndex:0];NSString *firstNumber = [_numbersArray objectAtIndex:0];NSString *sencondNumber = [_numbersArray objectAtIndex:1];NSLog(@"%@",_numbersArray);if ([firstOperate isEqualToString:@"*"]) {result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber];}if ([firstOperate isEqualToString:@"/"]) {result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber];}if ([firstOperate isEqualToString:@"+"]) {result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber];}if ([firstOperate isEqualToString:@"-"]) {result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber];}NSLog(@"result : %@",result);[_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,result]];}#pragma mark 操作符号 method- (NSString *)plusOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
{float num1 = [str1 floatValue];float num2 = [str2 floatValue];float resultNum = num1 + num2;return [NSString stringWithFormat:@"%f",resultNum];}- (NSString *)subOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
{float num1 = [str1 floatValue];float num2 = [str2 floatValue];float resultNum = num1 - num2;return [NSString stringWithFormat:@"%f",resultNum];}- (NSString *)multiOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
{float num1 = [str1 floatValue];float num2 = [str2 floatValue];float resultNum = num1 * num2;return [NSString stringWithFormat:@"%f",resultNum];}- (NSString *)divOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
{float num1 = [str1 floatValue];float num2 = [str2 floatValue];float resultNum = num1 / num2;return [NSString stringWithFormat:@"%f",resultNum];}@end

转载于:https://www.cnblogs.com/riasky/p/3459091.html

[课堂实践与项目]IOS优先级的计算器相关推荐

  1. [课堂实践与项目]NavigationController与TabBarController的综合使用及易错点分析(包含消息提醒,app更新)...

    陈述:我们在使用tabbarController的时候,我们总会和NavagationController联合起来.但是不联合的时候又是什么样的一种pool的情况呢?我们就单单的 TabBarCont ...

  2. 20155322 《Java程序设计》课堂实践项目 数据库-3-4

    20155322 <Java程序设计>课堂实践项目 数据库-3-4 数据库-3 实践要求 参考教材代码完成下面的要求,提交能连接到world的截图(有学号水印),并提交代码的码云链接.查询 ...

  3. WebRTC直播课堂实践:实时互动是核心

    随着低延时流媒体技术的不断进步,在线教育行业持续升温.本文来自七牛云在线教育行业解决方案专家 徐晶在LiveVideoStackCon2018大会中的演讲.在演讲中他阐述了基于WebRTC架构的低延时 ...

  4. Android小项目———— 冰炭不投de小计算器

    我的第一个Android小项目 冰炭不投de小计算器 一.前言 这是我首个使用java写的app,也在学习郭霖老师的第一行代码和李刚老师的疯狂java讲义之时,进行的练习之作,刚刚学习java和and ...

  5. 《Java程序设计》课堂实践内容总结

    <Java程序设计>课堂实践内容总结 实践一 要求 修改教材P98 Score2.java, 让执行结果数组填充是自己的学号: 提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的 ...

  6. 项目一:Java 计算器实现

    项目一:Java 计算器实现 实现步骤: 1.利用Java swing 制作计算器界面 ·界面大小(长度,宽度,位置-----可随意设置) ·输入框,按钮布局(大小,位置-----可随意设置) ·添加 ...

  7. 学生上课考勤系统jsp_基于jsp的学生课堂考勤-JavaEE实现学生课堂考勤 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的学生课堂考勤, 该项目可用各类java课程设计大作业中, 学生课堂考勤的系统架构分为前后台两部分, 最终实现在线上 ...

  8. IOS基础之计算器的编写

    IOS基础之计算器的编写 // // ViewController.m // Fraction_Calculator // // Created by 鲁军 on 2021/4/26. //#impo ...

  9. # 20155337 2017-2018-1 《信息安全系统设计基础》第二周课堂实践+myod

    20155337 2017-2018-1 <信息安全系统设计基础>第二周课堂实践+myod 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...

最新文章

  1. Android SharedPreferences保存和读取对象
  2. netstat 查看监听的端口程序
  3. ASP.Net MVC 在ajax接收controller返回值为Json数据
  4. python操作docx学习资料
  5. 树莓派命令连接wifi_树莓派连接无线网wifi配置方法
  6. python画统计图怎么在右上角表示哪条线代表什么_Python-matplotlib统计图之箱线图漫谈...
  7. 麦克劳林展开式_数学家麦克劳林与牛顿的故事
  8. Spring 无缝整合 quartz
  9. 思维方式是看待事物的角度、方式和方法,它对人的言行起到决定性作用
  10. hihocoder编程练习赛91:相邻字符串
  11. 约定俗成的版本号命名规则
  12. java 读取pdf表格_在Java中使用tabula提取PDF中的表格数据
  13. mac 壁纸 android,Mac系统风格桌面
  14. 【3dmax千千问】初学3dmax插件神器第23课:3dmax自学渲染进阶提升教程|疯狂模渲大师排除了特殊的材质后,室内设计师还要去除VRAY的光线追踪,再设计3dmax效果图!
  15. Kotlin如何写脚本
  16. javaweb实现不刷新网页更改页面内容
  17. 画出计算机硬件系统结构图,一、计算机的硬件结构.ppt
  18. 易语言和python混合编程_Python脚本可以嵌入易语言程序吗 |
  19. mysql存储过程 根据查询的结果集向表中插入数据
  20. 【word 2016】保存太慢解决办法

热门文章

  1. C++设计模式(全网最通俗易懂的设计模式进阶)
  2. html div右下浮动,div 初始化及左右浮动
  3. sqoop增量导入hive_Sqoop 增量导MySQL数据 至Hive
  4. 主键和索引哪个快_字节一面,被连问 MySQL 索引,脸都问绿了。。。
  5. 后端传输流跨域_Java开发中解决Js的跨域问题过程解析
  6. python win32转pdf 横版_Python调用Win32com实现Office批量转PDF
  7. 安卓c语言文档下载,C语言.NET技术09.doc
  8. 最大堆和最小堆和平衡二叉树_最小堆二叉树
  9. 排序算法python实现_用Python,Java和C / C ++实现的选择排序算法
  10. jmc线程转储_Java线程转储– VisualVM,jstack,kill -3,jcmd