ios开发七 计算器代码研究

//
//  zzcalculaterFunction.h
//  calculaterByOC
//
//  Created by Will Zhang/WKS/Wistron on 14-8-6.
//  Copyright (c) 2014年 Will Zhang. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface zzcalculaterFunction : NSObject
-(void)inputNumberToArray:(double)number;//输入一个数到数组中
-(double)outNumberFromArray;//得到最后一个元素
-(double)operation:(NSString *)operator1;
@property NSMutableArray * numberarray;//
@end

//
//  zzcalculaterFunction.m
//  calculaterByOC
//
//  Created by Will Zhang/WKS/Wistron on 14-8-6.
//  Copyright (c) 2014年 Will Zhang. All rights reserved.
//

#import "zzcalculaterFunction.h"

@implementation zzcalculaterFunction

-(void)inputNumberToArray:(double)number{
    if (_numberarray==nil) {
        _numberarray = [[NSMutableArray alloc]init];//创建一个数组
    }
    [_numberarray addObject:[NSNumber numberWithDouble:number]];//静态类进行创建id
}
-(double)outNumberFromArray{
    double number = [[_numberarray lastObject] doubleValue];//得到最后一个元素
    if (_numberarray !=nil) {
        [_numberarray removeLastObject];//移除最后一个元素
    }
    return number;
}
-(double)operation:(NSString *)operator1{
    double returnValue = [self outNumberFromArray];
    
    switch ([operator1 characterAtIndex:0]) {
        case '+':
            returnValue +=[self outNumberFromArray];//调用自己的函数
            break;
        case '-':
            returnValue = [self outNumberFromArray] - returnValue;
            break;
        case '*':
            returnValue = returnValue * [self outNumberFromArray];
            break;
        case '/':
            returnValue = [self outNumberFromArray] / returnValue;
            break;
            
        default:
            break;
    }
    [self inputNumberToArray:returnValue];
    return returnValue;
}
@end

//
//  zzViewController.h
//  calculaterByOC
//
//  Created by Will Zhang/WKS/Wistron on 14-8-5.
//  Copyright (c) 2014年 Will Zhang. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "zzcalculaterFunction.h"
@interface zzViewController : UIViewController//故事板的中的按钮和回调函数
@property (weak, nonatomic) IBOutlet UILabel *resultLable;//结果标签
- (IBAction)numberButton:(UIButton *)sender;//数字按钮回调
- (IBAction)operationButton:(UIButton *)sender;//操作按钮回调
- (IBAction)equalButton:(UIButton *)sender;//等号按钮回调
- (IBAction)clearButton:(UIButton *)sender;//清除按钮回调
@property (weak, nonatomic) IBOutlet UILabel *operationLable;//操作标签

@end

//
//  zzViewController.m
//  calculaterByOC
//
//  Created by Will Zhang/WKS/Wistron on 14-8-5.
//  Copyright (c) 2014年 Will Zhang. All rights reserved.
//

#import "zzViewController.h"

@interface zzViewController ()
//@property bool isInputNumber;
@end
zzcalculaterFunction * calculaterFunction;
BOOL isCalculateComplete=YES;
BOOL isInputNumber = YES;
NSString *operation;
double value1 = 0.0;
double value2 = 0.0;
BOOL isOperationButtonPressTwoTimes=NO;
@implementation zzViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    //初始化变量
    
    //定义一个计算类
    calculaterFunction = [[zzcalculaterFunction alloc]init];//自定义类的初始化
    _resultLable.text = @"";//设置为空
    _operationLable.text = @"";
    operation = [[NSString alloc] init];//string的创建
    

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)numberButton:(UIButton *)sender
{
    
    //如果之没有符号
    if (_operationLable.text.length==0)
    {
        //如果已经完成计算
        if (isCalculateComplete ==YES)
        {
            [calculaterFunction outNumberFromArray];//无参数函数的调用
            _resultLable.text=sender.currentTitle;
            isCalculateComplete=NO;
        }
        else
        {
            _resultLable.text= [_resultLable.text stringByAppendingString:sender.currentTitle];//连接字符串
        }
    }
    else//如果之前有符号
    {
        if (isCalculateComplete ==YES)
        {
            //[calculaterFunction outNumberFromArray];
            _resultLable.text=sender.currentTitle;
            isCalculateComplete=NO;
        }
        else
        {
            if (isInputNumber == YES)
            {
                _resultLable.text= [_resultLable.text stringByAppendingString:sender.currentTitle];//有参数函数的调用
            }
            else
            {
                _resultLable.text=sender.currentTitle;//text 可以用.或者用[]进行设置或获得
                isInputNumber =YES;
            }
            
            
        }
    }
    isOperationButtonPressTwoTimes=NO;

    
}

- (IBAction)operationButton:(UIButton *)sender {
    if (_operationLable.text.length==0) {
        
        if (isCalculateComplete ==YES) {
            isCalculateComplete =NO;
        }else{
            [calculaterFunction inputNumberToArray: _resultLable.text.doubleValue];
        }
    }else{
        if ([operation isEqualToString:_operationLable.text]) {
            
        }else{
            isOperationButtonPressTwoTimes = NO;
        }
        if (isOperationButtonPressTwoTimes ==NO) {
            [calculaterFunction inputNumberToArray: _resultLable.text.doubleValue];
            _resultLable.text = [NSString stringWithFormat:@"%g",[calculaterFunction operation:operation]];
            isOperationButtonPressTwoTimes =YES;
        }
        
        
    }
    _operationLable.text=sender.currentTitle;
    operation=_operationLable.text;
    isInputNumber=NO;
    
}

- (IBAction)equalButton:(UIButton *)sender {
    //[calculaterFunction inputNumberToArray: _resultLable.text.doubleValue];
    //[calculaterFunction operation:_operationLable.text];
    if (isCalculateComplete == NO) {
        value2 = _resultLable.text.doubleValue;
        [calculaterFunction inputNumberToArray: value2];
        _resultLable.text = [NSString stringWithFormat:@"%g",[calculaterFunction operation:operation]];//字符串格式化
        _operationLable.text=@"";
        
    }else {
        [calculaterFunction inputNumberToArray: value2];
        _resultLable.text = [NSString stringWithFormat:@"%g",[calculaterFunction operation:operation]];//%g,的意思是,系统自动判断用浮点计数法还是科学计数法来显示数值。
    }
    isCalculateComplete =YES;
    isOperationButtonPressTwoTimes = NO;
    
}

- (IBAction)clearButton:(UIButton *)sender {
    if (calculaterFunction.numberarray!=nil) {
        [calculaterFunction outNumberFromArray];
    }
    _resultLable.text = @"";
    _operationLable.text = @"";
    operation = @"";
    isCalculateComplete =YES;
    isOperationButtonPressTwoTimes = NO;
    isInputNumber = YES;
    
}
@end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值