(1)完成一个计算器,可以进行多目运算,而且可以判断优先级.
(1)先画UI,设置好位置
(2)处理限制输入:
1.处理不能同时输入多个符号,不能重复输入符号
2.开头不能为* 和 ÷
3.÷后面的数字不能为0
4.处理小数点
5.处理=
6.处理以符号结尾的公式,自动删除
(3)设计一个数组进行历史记载
(4)设计退出键
代码如下:
// // ViewController.h // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-20. // Copyright (c) 2013年 dradon. All rights reserved. // #import@interface ViewController : UIViewController { UITextField *textField;//输入与结果显示 UIButton *button;//按键 NSMutableString * str;//公式字符串 NSMutableArray *HistoryArr;//历史数组 } @end // // ViewController.m // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-20. // Copyright (c) 2013年 dradon. All rights reserved. // #import "ViewController.h" #import "MessageHandle.h" #import "ViewInit.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self.view setBackgroundColor:[UIColor colorWithRed:238/255.0 green:236/255.0 blue:238/255.0 alpha:1.0]]; //画UI [self initControl]; str = [[NSMutableString alloc] init]; [str setString:@""]; HistoryArr = [[NSMutableArray alloc]init]; } /* *初始化控件 */ -(void)initControl { [self initUItextField]; [self initUIbutton]; } /* *按键 */ -(void)initUIbutton { //初始化 button ViewInit *viewinit = [[ViewInit alloc]init]; for (int i = 0; i<20; i++) { button = [viewinit btnInit:i]; //绑定事件 [button addTarget:self action:@selector(onclick:) forControlEvents:UIControlEventTouchDown]; //4.添加到视图控制器 [self.view addSubview:button]; [button release]; } [viewinit release]; } //按键响应事件 -(void)onclick:(UIButton*)btn { //按键处理 MessageHandle *msgHandle = [[MessageHandle alloc] init]; [str setString:[msgHandle onClick:btn.tag andStr:str andHistroy:HistoryArr]]; //显示处理 [self display]; } /* *显示处理 */ -(void)display { if ([str length]>10) { NSMutableString *tempStr = [[NSMutableString alloc]init]; [tempStr setString:str]; [tempStr setString:[str substringWithRange:NSMakeRange([str length]-10, 10)]]; [textField setText:tempStr]; [tempStr release]; }else{ [textField setText:str]; } } /* *输入与结果 */ -(void)initUItextField { //初始化 textField ViewInit *viewinit = [[ViewInit alloc]init]; textField = [viewinit textFildInit]; [viewinit release]; //设置代理 textField.delegate = self; [self.view addSubview:textField]; [textField release]; } -(BOOL)textFieldShouldReturn:(UITextField *)_textField { [_textField resignFirstResponder]; return YES; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end // // ViewInit.h // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-21. // Copyright (c) 2013年 dradon. All rights reserved. // #import #import @interface ViewInit : NSObject //初始化控件 -(UITextField *)textFildInit; -(UIButton *)btnInit:(int)i; @end // // ViewInit.m // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-21. // Copyright (c) 2013年 dradon. All rights reserved. // #import "ViewInit.h" @implementation ViewInit /* *方法:textFildInit *功能:textField初始化 *参数:无 *返回值:textField */ -(UITextField *)textFildInit { UITextField *textField = [UITextField alloc];//实例化textField [textField initWithFrame:CGRectMake(20, 20, 280, 70)]; [textField setBackgroundColor:[UIColor colorWithRed:190/255.0 green:183/255.0 blue:165/255.0 alpha:0.5]]; [textField setFont:[UIFont fontWithName:@"Arial" size:45.0f]]; [textField setTextAlignment:NSTextAlignmentRight]; [textField setUserInteractionEnabled:NO]; [textField setBorderStyle:UITextBorderStyleRoundedRect]; [textField setTag:100]; return [textField autorelease]; } /* *方法:btnInit:(int)i *功能:按钮初始化 *参数: * i ---------按键号 *返回值:button */ -(UIButton *)btnInit:(int)i { UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.titleLabel.font = [UIFont systemFontOfSize: 30.0]; [button setTitleColor:[UIColor grayColor] forState:UIControlContentHorizontalAlignmentCenter]; [button setBackgroundImage:[UIImage imageNamed:@"num.9.png"] forState:UIControlStateNormal]; if (i<4) { [button setFrame:CGRectMake(22 + 72*i,110,60,60)]; switch (i) { case 0: [button setTitle:@"退出" forState:UIControlStateNormal]; button.titleLabel.font = [UIFont systemFontOfSize: 22.0]; [button setBackgroundImage:[UIImage imageNamed:@"0.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; case 1: [button setTitle:@"历史" forState:UIControlStateNormal]; button.titleLabel.font = [UIFont systemFontOfSize: 22.0]; [button setBackgroundImage:[UIImage imageNamed:@"0.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; case 2: [button setTitle:@"C" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"C.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; case 3: [button setTitle:@"" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"x.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; } }else if(i>=4 && i<8){ [button setFrame:CGRectMake(22 + 72*(i-4),10+110+60,60,60)]; switch (i) { case 4: [button setTitle:@"7" forState:UIControlStateNormal]; break; case 5: [button setTitle:@"8" forState:UIControlStateNormal]; break; case 6: [button setTitle:@"9" forState:UIControlStateNormal]; break; case 7: [button setTitle:@"" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"sub.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; } }else if(i>=8 && i<12){ [button setFrame:CGRectMake(22 + 72*(i-8),10+10+110+60+60,60,60)]; switch (i) { case 8: [button setTitle:@"4" forState:UIControlStateNormal]; break; case 9: [button setTitle:@"5" forState:UIControlStateNormal]; break; case 10: [button setTitle:@"6" forState:UIControlStateNormal]; break; case 11: [button setTitle:@"" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"mul.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; } }else if(i>=12 && i<16){ [button setFrame:CGRectMake(22 + 72*(i-12),10+10+10+110+60+60+60,60,60)]; switch (i) { case 12: [button setTitle:@"1" forState:UIControlStateNormal]; break; case 13: [button setTitle:@"2" forState:UIControlStateNormal]; break; case 14: [button setTitle:@"3" forState:UIControlStateNormal]; break; case 15: [button setTitle:@"" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"-.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; } }else{ [button setFrame:CGRectMake(22 + 72*(i-16),10+10+10+10+110+60+60+60+60,60,60)]; switch (i) { case 16: [button setTitle:@"." forState:UIControlStateNormal]; break; case 17: [button setTitle:@"0" forState:UIControlStateNormal]; break; case 18: [button setTitle:@"" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"=.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; case 19: [button setTitle:@"" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"+.9.png"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlContentHorizontalAlignmentCenter]; break; } } [button setTag:200+i]; [button setShowsTouchWhenHighlighted:YES]; return button; } //内存管理 -(void)dealloc { [super dealloc]; } @end // // MessageHandle.h // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-21. // Copyright (c) 2013年 dradon. All rights reserved. // #import @interface MessageHandle : NSObject //按键处理 -(NSMutableString *)onClick:(int)btnTag andStr:(NSMutableString *)str andHistroy:(NSMutableArray*)HistoryArr; @end // // MessageHandle.m // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-21. // Copyright (c) 2013年 dradon. All rights reserved. // #import "MessageHandle.h" #import "CalculateResult.h" @implementation MessageHandle //标志按下= BOOL equalFlag = NO; //历史记录计数器 static int histroyNum = 0; /* *方法:dealEqualString:(NSMutableString*)str *功能:按=之后是否继续按下符号或者数据 *参数: * str ---------处理的字符串 *返回值:void */ -(void)dealEqualString:(NSMutableString*)str { if (equalFlag) { equalFlag = NO; NSString *temp = [str substringWithRange:NSMakeRange([str length]-1, 1)]; if (!([temp isEqualToString:@"+"]||[temp isEqualToString:@"-"]||[temp isEqualToString:@"*"]||[temp isEqualToString:@"/"])) { [str setString:@""]; } } } /* *方法:Equaldisplay:(NSMutableString*)str *功能:按=之后结果保留10位有效数字 *参数: * str ---------处理的字符串 *返回值:void */ -(void)Equaldisplay:(NSMutableString*)str { if ([str length]>10) { [str setString:[str substringWithRange:NSMakeRange(0, 10)]]; } } /* *方法:dealEqual:(NSMutableString*)str *功能:处理开始时候按下=,避免空指针异常 *参数: * str ---------处理的字符串 *返回值:void */ -(void)dealEqual:(NSMutableString*)str { //处理空字符串出现异常 if ([str isEqual:@""]) { [str setString:@" "]; }else{ [str setString:str]; } NSSet *set =[NSSet setWithObjects:@"+",@"-",@"*",@"/",nil]; if ([set containsObject:[str substringWithRange:NSMakeRange([str length]-1, 1)]]) { [str setString:[str substringWithRange:NSMakeRange(0,[str length]-1)] ]; } } /* *方法:onClick:(int)btnTag andStr:(NSMutableString *)str *功能:按键处理 *参数: * btnTag---------按钮的标志 * str ---------处理的字符串 *返回值:str */ -(NSMutableString *)onClick:(int)btnTag andStr:(NSMutableString *)str andHistroy:(NSMutableArray*)HistoryArr { switch (btnTag) { case 200: NSLog(@"退出"); exit(0); break; case 201: NSLog(@"历史"); if([HistoryArr count] == 0)//处理点击历史时候,没有数据崩溃 { NSMutableString *ms =[[NSMutableString alloc]init]; [ms setString:@" "]; return [ms autorelease]; } //让历史记录循环 if (histroyNum == [HistoryArr count]) { histroyNum = 0; } [str setString:[HistoryArr objectAtIndex:histroyNum]]; histroyNum++; equalFlag = YES; break; case 202: NSLog(@"C"); [str setString:@""]; break; case 203: NSLog(@"xxx"); if ([str length]>0) { NSMutableString *tempStr = [[NSMutableString alloc]init]; [tempStr setString:str]; [str setString:[tempStr substringWithRange:NSMakeRange(0, [tempStr length]-1)]]; [tempStr release]; } break; case 204: NSLog(@"7"); [self dealEqualString:str]; [str appendString:@"7"]; break; case 205: NSLog(@"8"); [self dealEqualString:str]; [str appendString:@"8"]; break; case 206: NSLog(@"9"); [self dealEqualString:str]; [str appendString:@"9"]; break; case 207: NSLog(@"/"); [str appendString:@"/"]; //判断是否重复 [self dealRepeat:str andPram:@"/"]; [self dealRepeat:str andPram:@"."]; break; case 208: NSLog(@"4"); [self dealEqualString:str]; [str appendString:@"4"]; break; case 209: NSLog(@"5"); [self dealEqualString:str]; [str appendString:@"5"]; break; case 210: NSLog(@"6"); [self dealEqualString:str]; [str appendString:@"6"]; break; case 211: NSLog(@"*"); [str appendString:@"*"]; //判断是否重复 [self dealRepeat:str andPram:@"*"]; [self dealRepeat:str andPram:@"."]; break; case 212: NSLog(@"1"); [self dealEqualString:str]; [str appendString:@"1"]; break; case 213: NSLog(@"2"); [self dealEqualString:str]; [str appendString:@"2"]; break; case 214: NSLog(@"3"); [self dealEqualString:str]; [str appendString:@"3"]; break; case 215: NSLog(@"-"); [str appendString:@"-"]; //注意顺序不能调换 [self dealMinus:str andPram:@"-"]; [self dealRepeat:str andPram:@"-"]; [self dealRepeat:str andPram:@"."]; break; case 216: NSLog(@"."); [str appendString:@"."]; //判断是否重复 [self dealRepeatPoint:str andPram:@"."]; break; case 217: NSLog(@"0"); [self dealEqualString:str]; [str appendString:@"0"]; //[self dealZero:str andPram:@"/"]; break; case 218: NSLog(@"="); equalFlag = YES; [self dealEqual :str]; CalculateResult* result= [[CalculateResult alloc]init]; [str setString:[result getResult:str]]; [HistoryArr addObject:[result getResult:str]];//记录历史 // NSLog(@"HistoryArr = %@",HistoryArr); // NSLog(@"res=%@",str); [result release]; [self Equaldisplay:str]; break; case 219: NSLog(@"+"); [str appendString:@"+"]; [self dealRepeat:str andPram:@"+"]; [self dealMinus:str andPram:@"-"]; [self dealRepeat:str andPram:@"."]; break; } return str; } /* *方法:dealRepeatPoint:(NSMutableString*)str andPram:(NSString*)Pram *功能:控制重复小数点 *参数: * str ---------处理的字符串 * Pram ---------匹配参数 *返回值:void */ -(void)dealRepeatPoint:(NSMutableString*)str andPram:(NSString*)Pram { NSSet *set =[NSSet setWithObjects:@"+",@"-",@"*",@"/",nil]; //去掉重复 BOOL flag = [set containsObject:[str substringWithRange:NSMakeRange([str length] - 1, 1)]]; if (flag) {//去掉第二个重复的 [str setString:[str substringWithRange:NSMakeRange(0,[str length]-1)] ]; } NSInteger len = [str length]; NSMutableArray *marr = [[NSMutableArray alloc]init]; NSMutableArray *marr1 = [[NSMutableArray alloc]init]; //变成数组 for (NSInteger i = len-1; i >=0; i--) { [marr addObject:[str substringWithRange:NSMakeRange(i, 1)]]; } //NSLog(@"marr = %@",marr); //向前遍历,直到符号或没有 for (int i = 0; i < [marr count]; i++) { if ([set containsObject:[marr objectAtIndex:i]]) { break; } if (i< [marr count] -1) { [marr1 addObject:[marr objectAtIndex:i+1]]; } } //NSLog(@"marr1 = %@",marr1); if ([marr1 containsObject:@"."]) { [str setString:[str substringWithRange:NSMakeRange(0,[str length]-1)] ]; } } /* *方法:dealZero:(NSMutableString*)str andPram:(NSString*)Pram *功能:控制0 *参数: * str ---------处理的字符串 * Pram ---------匹配参数 *返回值:void */ -(void)dealZero:(NSMutableString*)str andPram:(NSString*)Pram { //去掉重复 BOOL flag = [[str substringWithRange:NSMakeRange([str length]-2, 1)] isEqualToString:Pram]; if (flag) {//去掉第二个重复的 [str setString:[str substringWithRange:NSMakeRange(0,[str length]-1)] ]; } } /* *方法:dealRepeat:(NSMutableString*)str andPram:(NSString*)Pram *功能:处理重复出现的符号 *参数: * str ---------处理的字符串 * Pram ---------匹配参数 *返回值:void */ -(void)dealRepeat:(NSMutableString*)str andPram:(NSString*)Pram { NSSet *set =[NSSet setWithObjects:@"+",@"-",@"*",@"/",nil]; //NSLog(@"%@",set); //去掉重复 BOOL flag = [[str substringWithRange:NSMakeRange([str length]-2, 1)] isEqualToString:Pram]; if (flag) {//去掉第二个重复的 [str setString:[str substringWithRange:NSMakeRange(0,[str length]-1)] ]; } //不能输入多个符号 if ([set containsObject:[str substringWithRange:NSMakeRange([str length]-2, 1)]]) { [str setString:[str substringWithRange:NSMakeRange(0,[str length]-1)] ]; } //开头字符不能为÷ x if ([str isEqualToString:@"/"] || [str isEqualToString:@"*"]) { //NSLog(@"第一个字符不能为x或÷"); [str setString:@""]; } } /* *方法:dealMinus:(NSMutableString*)str andPram:(NSString*)Pram *功能:处理减号(--得正) *参数: * str ---------处理的字符串 * Pram ---------匹配参数 *返回值:void */ -(void)dealMinus:(NSMutableString*)str andPram:(NSString*)Pram { BOOL flag = [[str substringWithRange:NSMakeRange([str length]-2, 1)] isEqualToString:Pram]; if (flag) {//去掉第二个重复的 [str setString:[str substringWithRange:NSMakeRange(0,[str length]-2)] ]; [str appendString:@"+"]; } flag = [[str substringWithRange:NSMakeRange([str length]-2, 1)] isEqualToString:@"+"]; if (flag) {//去掉第二个重复的 [str setString:[str substringWithRange:NSMakeRange(0,[str length]-2)] ]; [str appendString:@"-"]; } } //内存管理 -(void)dealloc { [super dealloc]; } @end // // CalculateResult.h // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-23. // Copyright (c) 2013年 dradon. All rights reserved. // #import @interface CalculateResult : NSObject //计算结果,并返回结果 -(NSString *)getResult:(NSMutableString *)str; @end // // CalculateResult.m // Calculator // 作者:DRAGON-Yeah // Created by 5016 on 13-12-23. // Copyright (c) 2013年 dradon. All rights reserved. // #import "CalculateResult.h" @implementation CalculateResult /* *方法:contains:(NSString*)str1 andStr:(NSString*)str2 *功能:判断字符串是否包含某个字符 *参数: * str1 ---------处理的字符串 * str2 ---------匹配的字符串 *返回值:flag */ -(BOOL)contains:(NSString*)str1 andStr:(NSString*)str2 { BOOL flag = NO; for (int i =0 ; i < str1.length; i++) { NSString *temp = [str1 substringWithRange:NSMakeRange(i, 1)]; if ([temp isEqualToString:str2]) { flag = YES; } } return flag; } /* *方法:dealWithPointZero:(NSMutableString *)str *功能:判断/后面是否为0 *参数: * str ---------处理的字符串 *返回值:YES/NO */ -(BOOL)dealWithPointZero:(NSMutableString *)str { NSMutableString *mstr = [str copy]; NSMutableArray *marr = [[NSMutableArray alloc]init]; NSArray *arr = [mstr componentsSeparatedByString:@"/"]; for (NSString *str0 in arr) { [marr addObject:str0]; } NSSet *set =[NSSet setWithObjects:@"+",@"-",@"*",@"/",nil]; NSMutableString *mstr1 = [[NSMutableString alloc]init]; // NSLog(@"marr = %@",marr); for (NSString *s in marr) { for (int i = 0; i< [s length]; i++) { NSString *temp = [s substringWithRange:NSMakeRange(i, 1)]; if ([set containsObject:temp]) { break; } [mstr1 appendString:temp]; } if([mstr1 doubleValue] == 0)//如果有0 { return YES; } [mstr1 setString:@""];//清空,保证每次只有一个数 } [mstr1 release]; [mstr release]; return NO; } /* *方法:getResult:(NSMutableString *)str *功能:返回处理好并且运算好的结果 *参数: * str ---------处理的字符串 *返回值:[[NSNumber numberWithDouble:result] stringValue] */ -(NSString *)getResult:(NSMutableString *)str { double MSresult = 0.0;//乘除结果 double ADresult = 0.0;//加减结果 double result = 0.0;//总结果 // NSMutableString *string = [[NSMutableString alloc]init]; // [string setString:@".8-2.78+5-6-8+34-35*23/34/32*45+12+457+2/6*47*78/12-56-78"]; /*处理/.0000000*/ if ([self dealWithPointZero:str]) { return str; } [self dealWithPointZero:str]; NSMutableString *string = str;//接收传来字符串 NSMutableArray *marr = [[NSMutableArray alloc] init]; //1.以+号分离 NSArray *arr1 = [string componentsSeparatedByString:@"+"]; //NSLog(@"arr1 = %@",arr1); for (NSString *str0 in arr1) { //NSLog(@"str0 = %@",str0); NSArray *arr2 = [str0 componentsSeparatedByString:@"-"]; for (int i = 0; i<[arr2 count]; i++) { NSString *temp = [arr2 objectAtIndex:i]; NSString *temp1 = @"-"; NSString *temp2 = @""; // NSLog(@"temp = %@",temp); if (i>0) { temp2 = [temp1 stringByAppendingFormat:@"%@",temp]; }else{ temp2 = temp; } [marr addObject:temp2]; } } NSLog(@"marr = %@",marr); NSMutableArray *marr1 = [[NSMutableArray alloc] init]; NSMutableArray *marr2 = [[NSMutableArray alloc] init]; //优先级分离出+- 与 */ for (NSString *s in marr) { if ([self contains:s andStr:@"*"]||[self contains:s andStr:@"/"]) { [marr1 addObject:s];//乘除 }else{ [marr2 addObject:s];//OK 加减 } } //处理乘除,获取结果 for (NSString *s in marr1) { //NSLog(@"s=%@",s); MSresult += [self tempResult:s]; } NSLog(@"MSresult = %lf",MSresult); //处理加减,获取结果 ADresult = [self aluResult:marr2]; NSLog(@"ADresult = %lf",ADresult); //求总结果 result = MSresult + ADresult; NSLog(@"result = %lf",result); [marr release]; [marr1 release]; [marr2 release]; return [[NSNumber numberWithDouble:result] stringValue]; } /* *方法:tempResult:(NSString*)str *功能:返回乘除的每一条结果 *参数: * str ---------处理的字符串 *返回值:result */ -(double)tempResult:(NSString*)str { double result = 0.0; NSMutableArray *marr = [[NSMutableArray alloc]init]; NSArray *arr = [str componentsSeparatedByString:@"*"]; for (int i = 0 ; i<[arr count] ; i++) { // NSLog(@"s=%@",s); NSString *temp = [arr objectAtIndex:i]; NSString *temp1 = @"*"; NSString *temp2 = @""; if (i>0) { temp2 = [temp1 stringByAppendingFormat:@"%@",temp]; }else{ temp2 = temp; } //NSLog(@"temp2=%@",temp2); NSArray *arr1 = [temp2 componentsSeparatedByString:@"/"]; for (int j=0 ;j<[arr1 count]; j++) { // NSLog(@"s1=%@",[arr1 objectAtIndex:j]); NSString *t = [arr1 objectAtIndex:j]; NSString *t1 = @"/"; NSString *t2 = @""; if (j>0) { t2 = [t1 stringByAppendingFormat:@"%@",t]; }else{ t2 = t; } // NSLog(@"t2 = %@",t2); [marr addObject:t2]; } } //计算值 result = [self aluMS:marr]; return result; } /* *方法:aluMS:(NSMutableArray*)marr *功能:返回乘除的一条结果 *参数: * marr ---------处理的一条乘除公式的数组 *返回值:res */ -(double)aluMS:(NSMutableArray*)marr { double res=1.0*[[marr objectAtIndex:0] doubleValue]; // NSLog(@"res = %lf",res); for (int i = 1; i<[marr count]; i++) { // NSLog(@"res =%@",[marr objectAtIndex:i]); NSString *temp = [marr objectAtIndex:i]; NSString *first = [temp substringWithRange:NSMakeRange(0, 1)]; NSString *second = [temp substringWithRange:NSMakeRange(1, [temp length]-1)]; //NSLog(@"first = %@",first); //NSLog(@"second = %@",second); if ([first isEqualToString:@"*"]) { res = res*[second doubleValue]; }else if([first isEqualToString:@"/"]){ res = res/[second doubleValue]; } } // NSLog(@"res = %lf",res); return res; } /* *方法:aluResult:(NSMutableArray*)marr *功能:返回累加结果 *参数: * marr ---------处理的一条加减公式的数组 *返回值:result */ -(double)aluResult:(NSMutableArray*)marr { //NSLog(@"加减marr = %@",marr); double result = 0.0; for (int i = 0; i<[marr count]; i++) { NSString *temp = [marr objectAtIndex:i]; //NSLog(@"加减 = %@",temp); result += [temp doubleValue]; } return result; } //内存管理 -(void)dealloc { [super dealloc]; } @end