IOS calculater


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

.h文件

  1. // 
  2. //  LCViewController.h 
  3. //  具有优先级的calculator 
  4. // 
  5. //  Created by lichan on 13-12-4. 
  6. //  Copyright (c) 2013年 com.lichan. All rights reserved. 
  7. // 
  8.  
  9. #import <UIKit/UIKit.h> 
  10.  
  11. @interface LCViewController : UIViewController 
  12. @property (retain, nonatomic) IBOutlet UITextField *textField; 
  13. @property (retain, nonatomic) IBOutlet UITextField *longTextField; 
  14.  
  15. @property (strong,nonatomic)NSMutableArray *numbersArray; 
  16.  
  17. @property (strong,nonatomic)NSMutableArray *operateArray; 
  18.  
  19. @property (copy,nonatomic)NSString *numberTempString; 
  20.  
  21. - (IBAction)longTextField:(id)sender; 
  22.  
  23. - (IBAction)numberPressed:(id)sender; 
  24. - (IBAction)clearScreen:(id)sender; 
  25.  
  26. - (IBAction)operatePressed:(UIButton *)sender; 
  27. - (IBAction)equalOperate:(id)sender; 
  28. @end 
//
//  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文件

  1. // 
  2. //  LCViewController.m 
  3. //  具有优先级的calculator 
  4. // 
  5. //  Created by lichan on 13-12-4. 
  6. //  Copyright (c) 2013年 com.lichan. All rights reserved. 
  7. // 
  8.  
  9. #import "LCViewController.h" 
  10.  
  11. @interface LCViewController () 
  12.  
  13. @end 
  14.  
  15. @implementation LCViewController 
  16.  
  17. - (void)viewDidLoad 
  18.     [super viewDidLoad]; 
  19.     _numberTempString = [[NSMutableString alloc]init]; 
  20.     _numbersArray = [[NSMutableArray alloc]init]; 
  21.     _operateArray = [[NSMutableArray alloc]init]; 
  22.     // Do any additional setup after loading the view, typically from a nib. 
  23.  
  24. -(void)dealloc 
  25.     [_numberTempString release]; 
  26.     [_textField release]; 
  27.     [_numbersArray release]; 
  28.     [_operateArray release]; 
  29.     [_longTextField release]; 
  30.     [super dealloc]; 
  31.  
  32.  
  33. - (void)didReceiveMemoryWarning 
  34.     [super didReceiveMemoryWarning]; 
  35.     // Dispose of any resources that can be recreated. 
  36.  
  37.  
  38. - (IBAction)numberPressed:(id)sender { 
  39.      
  40.     UIButton *tempButton = (UIButton *)sender; 
  41.      
  42.     NSString *tempNumber = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示 
  43.      
  44.     [_textField setText:[NSString stringWithFormat:@"%@%@",_textField.text,tempNumber]];  //textfield 上字符串的连接,以便于形成字符串 
  45.      
  46.      [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,tempNumber]]; 
  47.      
  48.     _numberTempString = _textField.text
  49.      
  50.      
  51.        
  52.  
  53. - (IBAction)clearScreen:(id)sender { 
  54.      
  55.     [_numbersArray removeAllObjects]; 
  56.     [_operateArray removeAllObjects]; 
  57.     _numberTempString = nil
  58.     [_textField setText:@""]; 
  59.     [_longTextField setText:@""]; 
  60.  
  61. - (IBAction)operatePressed:(UIButton *)sender { 
  62.      
  63.     UIButton *tempButton = (UIButton *)sender; 
  64.      
  65.     NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示 
  66.  
  67.     [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]]; 
  68.      
  69.      
  70.      
  71.     if (_textField.text != nil) { 
  72.          
  73.         [_numbersArray addObject:_numberTempString]; 
  74.          
  75.         NSLog(@"---_numbersArray%@",_numbersArray); 
  76.  
  77.         [_textField setText:@""]; 
  78.          
  79.         [_operateArray addObject:sender.currentTitle]; 
  80.         NSLog(@"_operateArray %@",_operateArray); 
  81.     } 
  82.     else if (_textField.text == nil
  83.     { 
  84.         [_operateArray removeLastObject]; 
  85.     [_operateArray addObject:sender.currentTitle]; 
  86.     NSLog(@"_operateArray %@",_operateArray); 
  87.     } 
  88.      
  89.  
  90. - (IBAction)equalOperate:(id)sender { 
  91.      
  92.     UIButton *tempButton = (UIButton *)sender; 
  93.      
  94.     NSString *temp = [tempButton titleLabel].text;//得到button的title值,以便于在textField显示 
  95.      
  96.     [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,temp]]; 
  97.      
  98.     if (_textField.text != nil) { 
  99.          
  100.         [_numbersArray addObject:_numberTempString]; 
  101.          
  102.         NSLog(@"---_numbersArray%@",_numbersArray); 
  103.          
  104.     } 
  105.      
  106.     //---------------- 
  107. NSString *result = [[NSString alloc]init]; 
  108.      
  109.  
  110.      
  111. while (_numbersArray.count >= 3
  112.     
  113.     NSString *firstOperate = [_operateArray objectAtIndex:0]; 
  114.     NSString *sencondOperate = [_operateArray objectAtIndex:1]; 
  115.      
  116.     NSString *firstNumber = [_numbersArray objectAtIndex:0]; 
  117.     NSString *sencondNumber = [_numbersArray objectAtIndex:1]; 
  118.     NSString *thirdNumber = [_numbersArray objectAtIndex:2]; 
  119.      
  120.     if ([firstOperate isEqualToString:@"+"] ||[firstOperate isEqualToString:@"-"]) 
  121.     { 
  122.        if ([sencondOperate isEqualToString:@"*"] ||[sencondOperate isEqualToString:@"/"]) 
  123.        { 
  124.             
  125.            if ([sencondOperate isEqualToString:@"*"]) { 
  126.                result = [self multiOperatorSymbolByOne:sencondNumber Two:thirdNumber]; 
  127.    
  128.  
  129.            } 
  130.            if ([sencondOperate isEqualToString:@"/"]) { 
  131.                result = [self divOperatorSymbolByOne:sencondNumber Two:thirdNumber]; 
  132.             
  133.                 
  134.            } 
  135.            [_operateArray removeObjectAtIndex:1]; 
  136.             
  137.            [_numbersArray removeObjectAtIndex:2]; 
  138.            [_numbersArray replaceObjectAtIndex:1 withObject:result]; 
  139.            NSLog(@"num:%@",_numbersArray); 
  140.  
  141.        } 
  142.         else 
  143.         { 
  144.             NSString *result = [[NSString alloc]init]; 
  145.             if ([firstOperate isEqualToString:@"+"]) { 
  146.             result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  147.                  
  148.                  
  149.             } 
  150.             if ([firstOperate isEqualToString:@"-"]) { 
  151.             result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  152.                      
  153.             } 
  154.              
  155.             [_operateArray removeObjectAtIndex:0]; 
  156.              
  157.              [_numbersArray replaceObjectAtIndex:0 withObject:result]; 
  158.             [_numbersArray removeObjectAtIndex:1]; 
  159.             
  160.             NSLog(@"%@",_numbersArray); 
  161.          
  162.          
  163.         } 
  164.            
  165.     } 
  166.     else 
  167.     { 
  168.         NSString *firstOperate = [_operateArray objectAtIndex:0]; 
  169.          
  170.         NSString *firstNumber = [_numbersArray objectAtIndex:0]; 
  171.         NSString *sencondNumber = [_numbersArray objectAtIndex:1]; 
  172.          
  173.          
  174.         if ([firstOperate isEqualToString:@"*"]) { 
  175.             result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  176.   
  177.         } 
  178.        
  179.         if ([firstOperate isEqualToString:@"/"]) { 
  180.             result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  181.              
  182.         } 
  183.          
  184.         [_operateArray removeObjectAtIndex:0]; 
  185.          
  186.         [_numbersArray removeObjectAtIndex:1]; 
  187.         [_numbersArray replaceObjectAtIndex:0 withObject:result]; 
  188.            NSLog(@"%@",_numbersArray); 
  189.          
  190.  
  191.     } 
  192.          
  193.      
  194.      
  195.  
  196.     NSString *firstOperate = [_operateArray objectAtIndex:0]; 
  197.     
  198.     NSString *firstNumber = [_numbersArray objectAtIndex:0]; 
  199.     NSString *sencondNumber = [_numbersArray objectAtIndex:1]; 
  200.        NSLog(@"%@",_numbersArray); 
  201.      
  202.   
  203.         if ([firstOperate isEqualToString:@"*"]) { 
  204.             result = [self multiOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  205.              
  206.              
  207.         } 
  208.         if ([firstOperate isEqualToString:@"/"]) { 
  209.             result = [self divOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  210.              
  211.         } 
  212.    
  213.         if ([firstOperate isEqualToString:@"+"]) { 
  214.             result = [self plusOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  215.              
  216.              
  217.         } 
  218.         if ([firstOperate isEqualToString:@"-"]) { 
  219.             result = [self subOperatorSymbolByOne:firstNumber Two:sencondNumber]; 
  220.              
  221.         } 
  222.      
  223.       
  224.    NSLog(@"result : %@",result); 
  225.  
  226. [_longTextField setText:[NSString stringWithFormat:@"%@%@",_longTextField.text,result]]; 
  227.  
  228.  
  229.      
  230.  
  231.  
  232. #pragma mark 操作符号 method 
  233.  
  234. - (NSString *)plusOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2 
  235.     float num1 = [str1 floatValue]; 
  236.     float num2 = [str2 floatValue]; 
  237.      
  238.      
  239.     float resultNum = num1 + num2
  240.          
  241.     return [NSString stringWithFormat:@"%f",resultNum]; 
  242.          
  243.  
  244. - (NSString *)subOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2 
  245.     float num1 = [str1 floatValue]; 
  246.     float num2 = [str2 floatValue]; 
  247.      
  248.      
  249.     float resultNum = num1 - num2
  250.      
  251.     return [NSString stringWithFormat:@"%f",resultNum]; 
  252.      
  253.  
  254.  
  255. - (NSString *)multiOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2 
  256.     float num1 = [str1 floatValue]; 
  257.     float num2 = [str2 floatValue]; 
  258.      
  259.      
  260.     float resultNum = num1 * num2
  261.      
  262.     return [NSString stringWithFormat:@"%f",resultNum]; 
  263.      
  264.  
  265. - (NSString *)divOperatorSymbolByOne:(NSString *)str1 Two:(NSString *)str2 
  266.     float num1 = [str1 floatValue]; 
  267.     float num2 = [str2 floatValue]; 
  268.      
  269.      
  270.     float resultNum = num1 / num2
  271.      
  272.     return [NSString stringWithFormat:@"%f",resultNum]; 
  273.      
  274.  
  275.  
  276.  
  277.  
  278. @end 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值