// // LCViewController.m // calculator // // Created by lichan on 13-12-3. // Copyright (c) 2013年 com.lichan. All rights reserved. // #import "LCViewController.h" static int lastKey = -1; @interface LCViewController () @end @implementation LCViewController #pragma mark numberButtonPressed method - (IBAction)buttonPressed:(id)sender //数字显示连接按钮 { UIButton *tempButton = (UIButton *)sender; NSString *tempNumber = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示 [_textField setText:[NSString stringWithFormat:@"%@%@",_textField.text,tempNumber]]; //textfield 上字符串的连接,以便于形成字符串 self.temp = _textField.text; // NSLog(@"浮点型:%f",[self.temp floatValue]); } - (IBAction)backButtonPressed:(id)sender { if (self.temp) { self.temp = [self.temp substringToIndex:self.temp.length-1]; [_textField setText:self.temp]; NSLog(@"new Temp:%@",self.temp); } } - (IBAction)opreatePressed:(id)sender //操作符按钮 { [_textField setText:@""]; if (!self.result) { self.result = self.temp; self.temp = nil; } self.num1 = [self.result floatValue]; self.num2 = [self.temp floatValue]; NSInteger opreateTag = [sender tag]; switch (opreateTag) { case 1: { lastKey = 1; [self plusOperatorSymbol]; break; } case 2: { lastKey = 2; [self subOperatorSymbol]; break; } case 3: { lastKey = 3; [self multiOperatorSymbol]; break; } case 4: { lastKey = 4; [self divOperatorSymbol]; break; } case 5: { if (lastKey == 1) { [self plusOperatorSymbol]; }else if(lastKey == 2) { [self subOperatorSymbol]; }else if(lastKey == 3) { [self multiOperatorSymbol]; }else if(lastKey == 4) { lastKey = 4; [self divOperatorSymbol]; } [_textField setText:self.result]; break; } case 6: { self.result = nil; self.temp = nil; break; } default: break; } } #pragma mark 操作符号 method - (void)plusOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 + _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } - (void)subOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 - _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } - (void)multiOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 * _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } - (void)divOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 / _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } #pragma mark 系统method - (void)dealloc { [_textField release]; [_result release]; [_numberString release]; [_temp release]; [super dealloc]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
最简单的优先级
.h
// // LCViewController.h // calculator // // Created by lichan on 13-12-3. // Copyright (c) 2013年 com.lichan. All rights reserved. // #import <UIKit/UIKit.h> @interface LCViewController : UIViewController @property (retain, nonatomic) IBOutlet UITextField *textField; @property (copy,nonatomic)NSString *numberString; @property (copy,nonatomic)NSString *result; @property (copy,nonatomic)NSString *temp; @property (nonatomic) float num1; @property (nonatomic) float num2; - (IBAction)buttonPressed:(id)sender; - (IBAction)backButtonPressed:(id)sender; -(IBAction)opreatePressed:(id)sender; @end
.m文件
// // LCViewController.m // calculator // // Created by lichan on 13-12-3. // Copyright (c) 2013年 com.lichan. All rights reserved. // #import "LCViewController.h" static int lastKey = -1; @interface LCViewController () @end @implementation LCViewController #pragma mark numberButtonPressed method - (IBAction)buttonPressed:(id)sender //数字显示连接按钮 { UIButton *tempButton = (UIButton *)sender; NSString *tempNumber = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示 [_textField setText:[NSString stringWithFormat:@"%@%@",_textField.text,tempNumber]]; //textfield 上字符串的连接,以便于形成字符串 self.temp = _textField.text; // NSLog(@"浮点型:%f",[self.temp floatValue]); } - (IBAction)backButtonPressed:(id)sender { if (self.temp) { self.temp = [self.temp substringToIndex:self.temp.length-1]; [_textField setText:self.temp]; NSLog(@"new Temp:%@",self.temp); } } - (IBAction)opreatePressed:(id)sender //操作符按钮 { [_textField setText:@""]; if (!self.result) { self.result = self.temp; self.temp = nil; } self.num1 = [self.result floatValue]; self.num2 = [self.temp floatValue]; NSInteger opreateTag = [sender tag]; switch (opreateTag) { case 1: { lastKey = 1; [self plusOperatorSymbol]; break; } case 2: { lastKey = 2; [self subOperatorSymbol]; break; } case 3: { lastKey = 3; [self multiOperatorSymbol]; break; } case 4: { lastKey = 4; [self divOperatorSymbol]; break; } case 5: { if (lastKey == 1) { [self plusOperatorSymbol]; }else if(lastKey == 2) { [self subOperatorSymbol]; }else if(lastKey == 3) { [self multiOperatorSymbol]; }else if(lastKey == 4) { lastKey = 4; [self divOperatorSymbol]; } [_textField setText:self.result]; break; } case 6: { self.result = nil; self.temp = nil; break; } default: break; } } #pragma mark 操作符号 method - (void)plusOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 + _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } - (void)subOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 - _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } - (void)multiOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 * _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } - (void)divOperatorSymbol { if (self.temp != nil) { float resultNum = _num1 / _num2; self.result = [NSString stringWithFormat:@"%f",resultNum]; self.temp = nil; } } #pragma mark 系统method - (void)dealloc { [_textField release]; [_result release]; [_numberString release]; [_temp release]; [super dealloc]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end