• Objective C


    代码

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

    界面

  • 相关阅读:
    [转载] IE8+兼容小结
    vue添加,删除内容
    vue跳转的两种方法
    checked 完整版全选,单选,反选
    网页特殊符号HTML代码大全
    利用css 实现 视觉差效果
    css 自定义滚动条样式
    js 模拟键盘
    css 动画 transition和animation
    浅谈浏览器垃圾回收机制
  • 原文地址:https://www.cnblogs.com/sskset/p/3758236.html
Copyright © 2020-2023  润新知