iOS 简易计算器 纯代码




把  计算器里的方法 封装一个类

#import <Foundation/Foundation.h>


@interface CaculatorBrain : NSObject



- (void)pushOperation:(NSString *)operation;

- (double)result:(BOOL)secondEq;

- (void)zero;

- (void)pushNumberInStack:(double)aDouble  andBool:(BOOL)aBool;


@end


#import "CaculatorBrain.h"

@class MxlJisuanqiViewController;

@interface CaculatorBrain()


@property (strong,nonatomic)NSMutableArray *operandStack;


@property (assign,nonatomic)unichar symbol;

@property (weak,nonatomic)MxlJisuanqiViewController *controller;

@property (assign,nonatomic)double secondNumber;


@end




@implementation CaculatorBrain


- (NSMutableArray *)operandStack

{

    if (!_operandStack) {

        _operandStack = [NSMutableArray arrayWithCapacity:3];

    }

    return _operandStack;

}



- (double)outANumber

{

    

    double number = [[self.operandStack lastObject]doubleValue];

    if ([self.operandStack lastObject]){

        [self.operandStack removeLastObject];

      }

 

        return number;


   

}


- (double)result:(BOOL)secondEq

{

     NSString *opera = [NSString stringWithFormat:@"%c",self.symbol];

    if (!secondEq){

        if ([self.operandStack count] >1 ){

            double number2 = [self outANumber];

            double number1 = [self outANumber];

           

            double result = 0;

            if ([opera isEqualToString:@"+"]) result = number1 + number2;

            else if ([@"-" isEqualToString:opera]) result = number1 - number2;

            else if ([opera isEqualToString:@"×"]) result = number1 * number2;

            

            else if ([opera isEqualToString:@"÷"])

            {

                if (number2 == 0) {

                    

                    

                }else

                {

                result = number1 / number2;

                }

            }else if ([opera isEqualToString:@""])

            {

                return result = number1;

            }

   

            return result;

        }

        else

        {

            [self zero];

            return  0;

        }

    }else {

     

        double number = [self outANumber];

      

        

        double result  = 0;

        if ([opera isEqualToString:@"+"]) result = number + self.secondNumber;

        else if ([@"-" isEqualToString:opera]) result = number - self.secondNumber;

        else if ([opera isEqualToString:@"×"]) result = number * self.secondNumber;

        else if ([opera isEqualToString:@"÷"])

        {

            if (self.secondNumber == 0) {

                

            }else

            {

            result = number / self.secondNumber;

            }

        }


        return  result;

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值