代码
// // CalculatorViewController.m // Calculator // // Created by sskset on 5/28/14. // Copyright (c) 2014 shanke. All rights reserved. // #import "CalculatorViewController.h" @interface CalculatorViewController () @property (weak, nonatomic) IBOutlet UITextField *resultText; @property (nonatomic) BOOL isProcessing; @property (nonatomic) NSMutableArray *numberStack; @property (nonatomic) NSMutableArray *operandStack; @end @implementation CalculatorViewController -(NSMutableArray *)operandStack { if(!_operandStack) _operandStack = [[NSMutableArray alloc] init]; return _operandStack; } -(NSMutableArray *)numberStack { if(!_numberStack) _numberStack = [[NSMutableArray alloc] init]; return _numberStack; } - (IBAction)operandPressed:(UIButton *)sender { if([self isAvailableToCalculate]) { [self doCalculate]; } else { [self.numberStack addObject:self.resultText.text]; } [self.operandStack addObject:sender.titleLabel.text]; self.isProcessing = NO; } - (IBAction)numberPressed:(UIButton *)sender { if (self.isProcessing) { self.resultText.text = [self.resultText.text stringByAppendingString:sender.titleLabel.text]; } else{ self.resultText.text = sender.titleLabel.text; self.isProcessing = YES; } } - (IBAction)resetPressed:(id)sender { self.isProcessing = NO; [self.numberStack removeAllObjects]; [self.operandStack removeAllObjects]; self.resultText.text = @"0"; } -(void)doCalculate { NSString *operand = [self.operandStack lastObject]; if(operand) { NSString *outObject = [self.numberStack lastObject]; int outputInteger = outObject ? [outObject intValue] : 0; [self.numberStack removeLastObject]; int resultInteger = 0; if ([operand isEqualToString:@"+"]) { resultInteger = [self.resultText.text intValue] + outputInteger; } else if ([operand isEqualToString:@"-"]) { resultInteger = outputInteger - [self.resultText.text intValue]; } else if ([operand isEqualToString:@"*"]) { resultInteger = outputInteger * [self.resultText.text intValue]; } else { resultInteger = [self.resultText.text intValue] == 0 ? 0 : outputInteger / [self.resultText.text intValue]; } [self.operandStack removeLastObject]; NSString *resultString = [NSString stringWithFormat:@"%d", resultInteger]; self.resultText.text = resultString; [self.numberStack addObject:resultString]; } } -(BOOL)isAvailableToCalculate { return [self.operandStack lastObject] != nil; } - (IBAction)enterPressed:(id)sender { [self doCalculate]; } @end
界面