Objective C - 3 - 实现一个计算器

代码

//

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

界面

 

Objective C - 3 - 实现一个计算器

你可能感兴趣的:(objective c)