zoukankan      html  css  js  c++  java
  • [课堂实践与项目]IOS优先级的计算器


    这个计算器主要是使用数组进行实现的.虽然没有使用前缀后缀表达式,但是是一种方法o.

    .h文件

    //
    //  LCViewController.h
    //  具有优先级的calculator
    //
    //  Created by lichan on 13-12-4.
    //  Copyright (c) 2013年 com.lichan. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface LCViewController : UIViewController
    @property (retain, nonatomic) IBOutlet UITextField *textField;
    @property (retain, nonatomic) IBOutlet UITextField *longTextField;
    
    @property (strong,nonatomic)NSMutableArray *numbersArray;
    
    @property (strong,nonatomic)NSMutableArray *operateArray;
    
    @property (copy,nonatomic)NSString *numberTempString;
    
    - (IBAction)longTextField:(id)sender;
    
    - (IBAction)numberPressed:(id)sender;
    - (IBAction)clearScreen:(id)sender;
    
    - (IBAction)operatePressed:(UIButton *)sender;
    - (IBAction)equalOperate:(id)sender;
    @end
    


    .m文件

    //
    //  LCViewController.m
    //  具有优先级的calculator
    //
    //  Created by lichan on 13-12-4.
    //  Copyright (c) 2013年 com.lichan. All rights reserved.
    //
    
    #import "LCViewController.h"
    
    @interface LCViewController ()
    
    @end
    
    @implementation LCViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        _numberTempString = [[NSMutableString alloc]init];
        _numbersArray = [[NSMutableArray alloc]init];
        _operateArray = [[NSMutableArray alloc]init];
    	// Do any additional setup after loading the view, typically from a nib.
    }
    
    -(void)dealloc
    {
        [_numberTempString release];
        [_textField release];
        [_numbersArray release];
        [_operateArray release];
        [_longTextField release];
        [super dealloc];
    
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    - (IBAction)numberPressed:(id)sender {
        
        UIButton *tempButton = (UIButton *)sender;
        
        NSString *tempNumber = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示
        
        [_textField setText:[NSString stringWithFormat:@"%@%@",_textField.text,tempNumber]];  //textfield 上字符串的连接,以便于形成字符串
        
         [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,tempNumber]];
        
        _numberTempString = _textField.text;
        
        
          
    }
    
    - (IBAction)clearScreen:(id)sender {
        
        [_numbersArray removeAllObjects];
        [_operateArray removeAllObjects];
        _numberTempString = nil;
        [_textField setText:@""];
        [_longTextField setText:@""];
    }
    
    - (IBAction)operatePressed:(UIButton *)sender {
        
        UIButton *tempButton = (UIButton *)sender;
        
        NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示
    
        [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]];
        
        
        
        if (_textField.text != nil) {
            
            [_numbersArray addObject:_numberTempString];
            
            NSLog(@"---_numbersArray%@",_numbersArray);
    
            [_textField setText:@""];
            
            [_operateArray addObject:sender.currentTitle];
            NSLog(@"_operateArray %@",_operateArray);
        }
        else if (_textField.text == nil)
        {
            [_operateArray removeLastObject];
        [_operateArray addObject:sender.currentTitle];
        NSLog(@"_operateArray %@",_operateArray);
        }
        
    }
    
    - (IBAction)equalOperate:(id)sender {
        
        UIButton *tempButton = (UIButton *)sender;
        
        NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示
        
        [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]];
        
        if (_textField.text != nil) {
            
            [_numbersArray addObject:_numberTempString];
            
            NSLog(@"---_numbersArray%@",_numbersArray);
            
        }
        
        //----------------
    NSString *result = [[NSString alloc]init];
        
    
        
    while (_numbersArray.count >= 3 )
    {
       
        NSString *firstOperate = [_operateArray objectAtIndex:0];
        NSString *sencondOperate = [_operateArray objectAtIndex:1];
        
        NSString *firstNumber = [_numbersArray objectAtIndex:0];
        NSString *sencondNumber = [_numbersArray objectAtIndex:1];
        NSString *thirdNumber = [_numbersArray objectAtIndex:2];
        
        if ([firstOperate isEqualToString:@"+"] ||[firstOperate isEqualToString:@"-"])
        {
           if ([sencondOperate isEqualToString:@"*"] ||[sencondOperate isEqualToString:@"/"])
           {
               
               if ([sencondOperate isEqualToString:@"*"]) {
                   result = [self multiOperatorSymbolByOne:sencondNumber Two:thirdNumber];
      
    
               }
               if ([sencondOperate isEqualToString:@"/"]) {
                   result = [self divOperatorSymbolByOne:sencondNumber Two:thirdNumber];
               
                   
               }
               [_operateArray removeObjectAtIndex:1];
               
               [_numbersArray removeObjectAtIndex:2];
               [_numbersArray replaceObjectAtIndex:1 withObject:result];
               NSLog(@"num:%@",_numbersArray);
    
           }
            else
            {
                NSString *result = [[NSString alloc]init];
                if ([firstOperate isEqualToString:@"+"]) {
                result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber];
                    
                    
                }
                if ([firstOperate isEqualToString:@"-"]) {
                result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber];
                        
                }
                
                [_operateArray removeObjectAtIndex:0];
                
                 [_numbersArray replaceObjectAtIndex:0 withObject:result];
                [_numbersArray removeObjectAtIndex:1];
               
                NSLog(@"%@",_numbersArray);
            
            
            }
              
        }
        else
        {
            NSString *firstOperate = [_operateArray objectAtIndex:0];
            
            NSString *firstNumber = [_numbersArray objectAtIndex:0];
            NSString *sencondNumber = [_numbersArray objectAtIndex:1];
            
            
            if ([firstOperate isEqualToString:@"*"]) {
                result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber];
     
            }
          
            if ([firstOperate isEqualToString:@"/"]) {
                result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber];
                
            }
            
            [_operateArray removeObjectAtIndex:0];
            
            [_numbersArray removeObjectAtIndex:1];
            [_numbersArray replaceObjectAtIndex:0 withObject:result];
               NSLog(@"%@",_numbersArray);
            
    
        }
            
        
        
    }
    
        NSString *firstOperate = [_operateArray objectAtIndex:0];
       
        NSString *firstNumber = [_numbersArray objectAtIndex:0];
        NSString *sencondNumber = [_numbersArray objectAtIndex:1];
           NSLog(@"%@",_numbersArray);
        
     
            if ([firstOperate isEqualToString:@"*"]) {
                result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber];
                
                
            }
            if ([firstOperate isEqualToString:@"/"]) {
                result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber];
                
            }
      
            if ([firstOperate isEqualToString:@"+"]) {
                result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber];
                
                
            }
            if ([firstOperate isEqualToString:@"-"]) {
                result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber];
                
            }
        
         
       NSLog(@"result : %@",result);
    
    [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,result]];
    
    }
    
        
    
    
    #pragma mark 操作符号 method
    
    - (NSString *)plusOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
    {
        float num1 = [str1 floatValue];
        float num2 = [str2 floatValue];
        
        
        float resultNum = num1 + num2;
            
        return [NSString stringWithFormat:@"%f",resultNum];
            
    }
    
    - (NSString *)subOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
    {
        float num1 = [str1 floatValue];
        float num2 = [str2 floatValue];
        
        
        float resultNum = num1 - num2;
        
        return [NSString stringWithFormat:@"%f",resultNum];
        
    }
    
    
    - (NSString *)multiOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
    {
        float num1 = [str1 floatValue];
        float num2 = [str2 floatValue];
        
        
        float resultNum = num1 * num2;
        
        return [NSString stringWithFormat:@"%f",resultNum];
        
    }
    
    - (NSString *)divOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2
    {
        float num1 = [str1 floatValue];
        float num2 = [str2 floatValue];
        
        
        float resultNum = num1 / num2;
        
        return [NSString stringWithFormat:@"%f",resultNum];
        
    }
    
    
    
    
    @end
    


  • 相关阅读:
    Python生成器
    Python迭代器
    Python异常处理
    Python面向对象进阶
    Python面向对象基础
    Python闭包和装饰器
    Python函数
    Python文件操作
    Python深浅拷贝
    Python的列表&元组&字典&集合
  • 原文地址:https://www.cnblogs.com/riasky/p/3459091.html
Copyright © 2011-2022 走看看